数组去重一个主要的思路就是:遍历原数组中的每个元素,判断新数组中是否已有该元素,若有,则不操作;若没有,则将该元素加入新数组。这个思路写成代码如下:
let arr = [1,2,3,5,4,6,2,3,1,1] let arr2 = [] for(let i of arr){ if(arr2.indexOf(i) == -1){ arr2.push(i) } }
其中最关键的一步,就是“判断新数组中是否已有该元素”,上面使用了数组的indexOf方法,这一判断条件还可以替换成:
!arr2.includes(i)
如果不使用已有的数组方法,那实现这个判断条件需要两层遍历,外循环遍历原数组,内循环遍历新数组,看上去相当笨拙:
let arr6 = [] arr6[0] = arr[0] for (let i of arr) { for(let k of arr6){ if (k == i) { break } if(k == arr6[arr6.length-1]){ arr6.push(i) } } }
还可以利用数组的filter方法,我们注意到:对于多次出现的元素,其indexOf方法返回的只是它第一次出现的索引,因此可以把“元素的索引和其indexOf方法返回值”作为过滤条件,这相当于多个相同元素,只保留第一个。
let arr4 = arr.filter( (item, index, self) => { return self.indexOf(item) == index }) console.log(arr4)
我们知道集合最大的特点就是其中没有重复的元素,而数组与集合之间的转化其实很简单(这应该是最简单的方法):
let s = new Set(arr) let arr3 = [...s]
原文:https://www.cnblogs.com/creationMarvel/p/14897601.html