在JavaScript中,有多种方法可以实现数组去重:
使用Set:Set是ES6中新增的数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。
let array = [1, 2, 3, 4, 4, 5, 5];
let uniqueArray = [...new Set(array)];
使用filter:filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
let array = [1, 2, 3, 4, 4, 5, 5];
let uniqueArray = array.filter((value, index, self) => {
return self.indexOf(value) === index;
});
使用reduce:reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
let array = [1, 2, 3, 4, 4, 5, 5];
let uniqueArray = array.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
数组对象:
在JavaScript中,如果你有一个包含对象的数组,并且你想根据对象的某个属性进行去重,你可以使用reduce方法。以下是一个例子:
let array = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
let uniqueArray = array.reduce((prev, cur) => {
let exists = prev.find(item => item.id === cur.id);
if (!exists) {
return prev.concat([cur]);
} else {
return prev;
}
}, []);
console.log(uniqueArray);
在这个例子中,我们使用reduce方法遍历数组,对于每个元素,我们检查它是否已经存在于新数组中。如果不存在,我们就将它添加到新数组中。最后,我们得到的新数组就是去重后的数组。
使用 Map 对象:
let array = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
let map = new Map();
for (let item of array) {
if (!map.has(item.id)) {
map.set(item.id, item);
}
}
let uniqueArray = Array.from(map.values());
console.log(uniqueArray);
使用 filter 和 map 方法:
let array = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 1, name: 'Alice' }
];
let idArray = array.map(item => item.id);
let uniqueArray = array.filter((item, index) => {
return idArray.indexOf(item.id) === index;
});
console.log(uniqueArray);
标签:name,对象,item,普通,let,数组,array,id
From: https://blog.csdn.net/weixin_43867229/article/details/137027855