reduce实现数组去重
时间: 2023-06-21 16:17:06 浏览: 46
要使用reduce实现数组去重,可以使用以下代码:
```javascript
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((acc, cur) => {
if (!acc.includes(cur)) {
acc.push(cur);
}
return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
在reduce的初始值中传入一个空数组,然后在回调函数中判断当前元素是否已经存在于累加器中,如果不存在,则将其添加到累加器中。最后返回累加器即可得到去重后的数组。
相关问题
reduce实现对象数组去重
要使用reduce实现对象数组去重,可以使用以下代码:
```javascript
const arr = [
{ id: 1, name: "apple" },
{ id: 2, name: "banana" },
{ id: 2, name: "banana" },
{ id: 3, name: "orange" },
{ id: 4, name: "peach" },
{ id: 4, name: "peach" },
{ id: 5, name: "watermelon" },
];
const uniqueArr = arr.reduce((acc, cur) => {
const ids = acc.map((item) => item.id);
if (!ids.includes(cur.id)) {
acc.push(cur);
}
return acc;
}, []);
console.log(uniqueArr);
// Output:
// [
// { id: 1, name: 'apple' },
// { id: 2, name: 'banana' },
// { id: 3, name: 'orange' },
// { id: 4, name: 'peach' },
// { id: 5, name: 'watermelon' }
// ]
```
在reduce的初始值中传入一个空数组,然后在回调函数中将累加器中已有的对象的id放入一个数组中,并判断当前遍历到的对象是否已经存在于累加器中,如果不存在,则将其添加到累加器中。最后返回累加器即可得到去重后的对象数组。
利用JavaScript实现数组去重
可以使用以下方法实现数组去重:
1. 利用Set数据结构
```
let arr = [1, 2, 2, 3, 3, 4, 5, 5];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
2. 利用filter方法
```
let arr = [1, 2, 2, 3, 3, 4, 5, 5];
let uniqueArr = arr.filter((item, index, array) => {
return array.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
3. 利用reduce方法
```
let arr = [1, 2, 2, 3, 3, 4, 5, 5];
let uniqueArr = arr.reduce((prev, cur) => {
if (!prev.includes(cur)) prev.push(cur);
return prev;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
以上三种方法都可以实现数组去重,其中利用Set数据结构的方法最为简洁。