数组去重的几种方法
1. indexOf()
利用indexof检索数组里面是否存在该数组元素 如果有返回该数组元素的索引 如没有过返回-1
indexOf()去重的语法格式:
var arr=[2,4,5,2,1,5,]
var newArr = []
for(var i = 0; i<arr.length; i++){
if(newArr.indexOf(arr[i] == -1)){
newArr.push(arr[i])
}
}
//这里利用indexOf()查寻新数组里面有没有老数组对应索引的数组元素
//如果没有过则把这个数组元素添加进去
2. 双重for循环
双重for循环去重的语法格式:
var arr = [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];
function unlink(arr) {
for (var i = 0; i < arr.length; i++) { // 首次遍历数组
for (var j = i + 1; j < arr.length; j++) { // 再次遍历数组
if (arr[i] == arr[j]) { // 判断连个值是否相等
arr.splice(j, 1); // 相等删除后者
j--;
}
}
}
return arr
}
//利用的for循环的原理 外层循环一次内层循环全部 当外层循环一次时i=0
//内层循环全部我们拿着老数组的第一个数组元素依次和新数组里面的每一个元素进行比较 如有则不添加 如没有则添加
3. ES6内置去重 new Set()
ES6内置去重去重的语法格式:
let arr=[2,4,5,2,1,5,]
let newArr = [...new Set(arr)]
//ES6的里面内置的写法
3. 利用数组的遍历方法中的过滤 filter()
filter()去重的语法格式:
var arr = [1, 1, 8, 8, 12, 15, 16, 16];
function unlink(arr) {
return arr.filter(function (item, index, arr) {
//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
return arr.indexOf(item, 0) === index;
});
}
//此时newArr里面就得到的去重后的新数组