在JavaScript中,有多种方法可以对复杂数组进行去重。
- 使用Set对象:Set对象是ES6中引入的一种新的数据结构,它允许存储任何类型的唯一值。可以将复杂数组转换为Set对象,然后再将其转换回数组,即可实现数组去重。
let arr = [{id: 1}, {id: 2}, {id: 1}, {id: 3}]; let uniqueArr = [...new Set(arr.map(JSON.stringify))].map(JSON.parse); console.log(uniqueArr);
- 使用filter()方法和indexOf()方法:通过遍历数组,使用indexOf()方法检查元素在数组中的位置,并将不重复的元素筛选出来。
let arr = [{id: 1}, {id: 2}, {id: 1}, {id: 3}]; let uniqueArr = arr.filter((item, index) => { return arr.findIndex(obj => JSON.stringify(obj) === JSON.stringify(item)) === index; }); console.log(uniqueArr);
- 使用reduce()方法:使用reduce()方法遍历数组,将不重复的元素存储在一个新的数组中。
let arr = [{id: 1}, {id: 2}, {id: 1}, {id: 3}]; let uniqueArr = arr.reduce((result, item) => { const index = result.findIndex(obj => JSON.stringify(obj) === JSON.stringify(item)); if (index === -1) { result.push(item); } return result; }, []); console.log(uniqueArr);
以上是几种常用的方法,可以根据具体情况选择适合的方法进行数组去重。