js reduce通过对象属性去重
时间: 2023-08-31 18:09:52 浏览: 47
你可以使用`reduce`函数和一个空对象来通过对象属性去重。下面是一个示例代码:
```javascript
const data = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'John' },
{ id: 4, name: 'Jane' }
];
const uniqueData = data.reduce((acc, obj) => {
const key = obj.name;
if (!acc[key]) {
acc[key] = obj;
}
return acc;
}, {});
const result = Object.values(uniqueData);
console.log(result);
```
在上面的代码中,`reduce`函数用于遍历数组`data`,并将每个对象的`name`属性作为键来存储在`acc`对象中。如果该属性在`acc`对象中不存在,说明该对象是唯一的,我们将其存储在`acc`对象中。最后,通过`Object.values`获取所有唯一的对象组成的数组。
运行上述代码,你会得到以下输出:
```
[
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' }
]
```
这样,你就成功通过对象属性去重了。
相关问题
js数组对象根据某个属性去重
可以使用reduce方法和Map数据结构来实现根据某个属性去重。例如,如果要根据对象数组中的某个属性name去重,可以这样写:
```javascript
const arr = [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 3, name: 'foo' },
{ id: 4, name: 'baz' },
{ id: 5, name: 'bar' }
];
const map = new Map();
const result = arr.reduce((acc, cur) => {
if (!map.has(cur.name)) {
map.set(cur.name, true); // set any value to Map
acc.push(cur);
}
return acc;
}, []);
console.log(result);
// Output: [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 4, name: 'baz' }]
```
在这个例子中,我们通过reduce方法遍历原始数组,并使用Map数据结构来记录已经出现过的name,如果当前遍历到的对象的name还没有出现过,就将它加入结果数组中。最终的结果就是一个根据name去重后的新数组。
js将数对象某个属性去重后用逗号分隔
可以使用数组的 reduce 和 includes 方法来实现。具体操作如下:
```javascript
const arr = [{num: 1}, {num: 2}, {num: 1}, {num: 3}, {num: 2}];
const uniqueArr = arr.reduce((unique, item) => {
if (!unique.includes(item.num)) {
unique.push(item.num);
}
return unique;
}, []).join(',');
console.log(uniqueArr); // "1,2,3"
```
首先使用 reduce 方法对数组进行遍历,同时使用 includes 方法判断当前元素是否已经存在于新数组中,如果不存在则将其添加到新数组中。最后使用 join 方法将新数组用逗号分隔转为字符串输出。