数组去重是很容易用到的一个功能,前端去重方法也有很多,这里记录几种常用的方法,使用的场景也稍有区别,可根据实际需求选取最合适的方法
1、for循环嵌套,配合使用splice
最常用方法、兼容性比较高,也适合去重时是根据数组中元素的某一项去重或者某几项去重时使用
此例为根据数组中数据的某一项去重
let arr = [
{name: '张三', age: 10},
{name: '李四', age: 20},
{name: '张三', age: 10},
{name: '王五', age: 17},
]
for(var i = 0; i < arr.length; i++){
for(var j = i + 1; j < arr.length; j++){
// 如果外层arr[i]的name等于内层arr[i]的name,splice方法删除内层arr[i]
if (arr[i].name == arr[j].name) {
arr.splice(j,1);
j--;
}
}
}
console.log(arr)
// [
//{name: '张三', age: 10},
//{name: '李四', age: 20},
//{name: '王五', age: 17},
//]
2、利用indexOf
此种方式适合数组中元素不是对象或者数组情况,否则判断不出来
let arr = [1, 2, '张三', 3, 2, '张三']
var arrNew = [];
// 遍历当前数组
for(var i = 0; i < arr.length; i++){
// 如果临时数组里没有当前数组的当前值,则把当前值push到新数组里面
if (arrNew.indexOf(arr[i]) == -1){
arrNew.push(arr[i])
};
}
console.log(arrNew) // [1, 2, '张三', 3]
3、利用Set方法
此方法是ES6方法,代码量很少,但也只适合去重数组中元素非对象或者数组
let arr = [1, 2, '张三', 3, 2, '张三']
arr = Array.from(new Set(arr))
console.log(arr) // [1, 2, '张三', 3]

1175

被折叠的 条评论
为什么被折叠?



