reduce函数对象数组去重
时间: 2024-06-02 18:06:08 浏览: 116
reduce函数是JavaScript中常用的高阶函数之一,可以对一个数组进行迭代操作,返回一个累积值。数组去重可以通过reduce函数对象进行实现,具体实现方式如下:
```javascript
const arr = [1, 2, 2, 3, 4, 4];
const result = arr.reduce((prev, cur) => {
if (!prev.includes(cur)) {
prev.push(cur);
}
return prev;
}, []);
console.log(result); // [1, 2, 3, 4]
```
在上述代码中,reduce函数的第一个参数是一个回调函数,该回调函数接受两个参数prev和cur,prev表示当前累积值,cur表示当前遍历的元素。回调函数内部通过判断prev数组中是否包含cur元素,如果不包含就将cur元素push进prev数组中。最终返回prev数组,即为去重后的结果。
相关问题
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放入一个数组中,并判断当前遍历到的对象是否已经存在于累加器中,如果不存在,则将其添加到累加器中。最后返回累加器即可得到去重后的对象数组。
vue js对象数组去重
在Vue.js中,可以使用一些方法来对对象数组进行去重操作。以下是一种常见的方法:
1. 使用Set数据结构:将对象数组转换为Set,然后再将Set转换回数组,这样就可以去除重复项。例如:
```javascript
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);
console.log(uniqueArr);
```
2. 使用reduce方法:通过遍历对象数组,使用reduce方法来判断是否已存在相同的对象,如果不存在则将其添加到结果数组中。例如:
```javascript
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = arr.reduce((acc, obj) => {
let exists = acc.find(item => item.id === obj.id);
if (!exists) {
acc.push(obj);
}
return acc;
}, []);
console.log(uniqueArr);
```
3. 使用lodash库:lodash是一个常用的JavaScript工具库,它提供了许多方便的函数来处理数据。可以使用lodash中的uniqBy函数来对对象数组进行去重。例如:
```javascript
import _ from 'lodash';
let arr = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 1, name: 'Alice'}];
let uniqueArr = _.uniqBy(arr, 'id');
console.log(uniqueArr);
```
阅读全文