方法一:
//方法一:
var arr=[1,2,3,4,5,1,2,3,4,5]
var newArr=[]
for(let i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])===-1){
newArr.push(arr[i])
}
}
console.log(newArr);
- 思路:
- 创建一个新数组
- 遍历老数组
- 把老数组里面的每一项放到新数组里面去,放的时候做一个判断。判断这个数组里面是否有这一项,如果没有就放到新数组里面。
- 得到的这个新数组就是去重后的数组
方法二:
//方法二:
var arr = [1, 2, 3, 4, 1, 1, 1, 3, 4, 5, 6]
var newArr= arr.filter(function(item,index){
return arr.indexOf(item) === index
})
//得到的新数组就是去重后的数组
console.log(newArr);
- 思路:
- 利用filter方法遍历这个数组
- 因为indexOf查找只会返回匹配到的第一项下标,所以判断这个数组里面的每一项是不是有这个下标了
- return返回的这个新数组就是去重后的数组
方法三:
//方法三:
var arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
//讲数组去重
let set = new Set(arr)
//得到是一个去重后的集合
console.log(set);
arr = [...set]
console.log(arr);
//=======================================
//简写
arr = [...new Set(arr)]
console.log(arr);
- 思路:
- ES6提出一种新的数据类型Set,他的特性是:不存储重复的数据
- 所以我们就可以利用他去重。把要去重的数组放到new Set(数组)里面,就能得到一个新的去重后的Set。
- 我们想要的是一个数组,所以要把set转换成一个数组。思路:
- 创建一个新数组
- 取出set里面的每一项,放到这个新数组里面去
- 得到的这新数组就是转换后的数组
- ES6可以利用展开运算符...快速取出每一项,然后再赋值给原数组,这样我们得到的这个原数组就是去重后的数组。
方法四:
//方法四
var arr1 = Array.from(new Set(arr))
console.log(arr1);
将一个类数组(伪数组)/ 可迭代的对象 转成数组结构