数组去重的个人思路:
let arr1 = [1, 2, 3, 4, 1, 2, 5, 6];
let arr2 = ["a", "b", "c", "a", "d", "c"];
let newArr = []; // 创建一个新数组
for (let [index, item] of arr2.entries()) { // 遍历原数组
if(!newArr.includes(item)){// 原数组的元素和新数组进行比较
newArr.push(item) // 选择性添加到新数组里
}
}
console.log(newArr)
ES6的Set语法去重
let arr1 = [1, 2, 3, 4, 1, 2, 5, 6];
let set = [...new Set(arr1)] // [1, 2, 3, 4, 5, 6]
let arr2 = ["a", "b", "c", "a", "d", "c"];
let set = [...new Set(arr2)] // ["a", "b", "c", "d"]
以上两个数组哟Set语法可以完美解决去重这个问题,但是在如下这种数组里面,Set有点无能为力
let arr3 = [
{id: 1,name: "张三"},
{id: 2,name: "老王"},
{id: 3,name: "小红"},
{id: 4,name: "小明"},
{id: 1,name: "王五"},
{id: 2,name: "李四"},
]
let set = [...new Set(arr3)]
console.log(set) // 0: {id: 1, name: "张三"}
// 1: {id: 2, name: "老王"}
// 2: {id: 3, name: "小红"}
// 3: {id: 4, name: "小明"}
// 4: {id: 1, name: "王五"}
// 5: {id: 2, name: "李四"}
利用对象查找元素的属性
let arr3 = [
{ id: 1, name: "张三" },
{ id: 2, name: "老王" },
{ id: 3, name: "小红" },
{ id: 4, name: "小明" },
{ id: 1, name: "王五" },
{ id: 2, name: "李四" }
]
var result = [];
let obj = {};
for (var i = 0; i < arr3.length; i++) {
if (!obj[arr3[i].id]) {
result.push(arr3[i]);
obj[arr3[i].id] = true;
console.log(result)
}
}