// 数组去重
// 1. filter
this.arrs = arr.filter((item, index) =>
arr.indexOf(item) === index
)
console.log('this.arrs', this.arrs) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 2.es6去重 ...扩展运算符 [...set]
let arrs = [...new Set(arr)]
console.log('arrs', arrs) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 3.indexOf
let Arr = []
arr.forEach(item => {
if (Arr.indexOf(item) === -1) {
Arr.push(item)
}
})
console.log('Arr', Arr) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var arrs = [1,3,1,4,34,1,10];
-
利用indexOf 在新数组里查找,未找到推入一个值 var res = [];
for(var i = 0; i < arrs.length;i++){
var n = arrs[i];
if(res.indexOf(n) == -1){
res.push(n);
}
} console.log(res);//[1, 3, 4, 34, 10] -
利用lastIndexOf 查找的字符串最后出现的位置,如果没有找到匹配字符串则返回 -1 var res = []; for (var i = 0; i < arrs.length; i++) {
var m = arrs[i];
res.lastIndexOf(m) != -1 ? "" : res.push(m);
}
console.log(res);//[1, 3, 4, 34, 10] -
利用forEach和includes arrs.forEach(function(item){
res.includes(item) ? "" : res.push(item);
})
console.log(res); -
es6中set语法 去除数组中的重复值 [..new Set(array)]
var set = new Set(arrs);
console.log([...set]);//[1, 3, 4, 34, 10] ...扩展运算符 [...set] -
filter()去重 filter()为数组提供过滤功能,它会遍历数组所有元素,并返回满足条件的元素组成的新数组,filter()不会修改原数组 filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身 去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了 var aa = arrs.filter(function(x,index,arr){
return arr.indexOf(x) === index;
})
console.log(arrs,aa);//[1, 3, 1, 4, 34, 1, 10] [1, 3, 4, 34, 10] -
sort() 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对 arr = arrs.sort();
var arry = [arr[0]];
console.log(arr);//[1, 1, 1, 10, 3, 34, 4] sort排序后的值
for(var i = 1;i < arr.length;i++){
if(arr[i] !== arr[i-1]){
arry.push(arr[i]); //判断相邻元素是否一致,若不一致,向新数组arry中push
}
}
console.log(arry);//[1, 10, 3, 34, 4] -
双层for循环,利用splice去重 for(var i = 0; i < arrs.length; i++){
for(var j = i + 1; j < arrs.length; j++){
if(arrs[i] == arrs[j]){
arrs.splice(j,1);//双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值
j--;
}
}
}
console.log(arrs);//[1, 10, 3, 34, 4] -