【发布时间】:2021-01-02 09:25:00
【问题描述】:
当我有一个对象数组时,如何计算对象属性的唯一值?
let organisations = [
{
"id": 1,
"name": "nameOne",
},
{
"id": 2,
"name": "nameTwo",
},
{
"id": 3,
"name": "nameOne",
}
]
在这种情况下,我如何计算唯一组织名称的数量。这里的答案是两个,因为有两个唯一的名称。
这行不通
var counts = this.filteredExtendedDeals.reduce(
(organisations, name) => {
counts[name] = (counts[name] || 0) + 1;
return counts;
},
{}
);
return Object.keys(counts);
【问题讨论】:
-
减少或过滤
-
@mplungjan 你没有指定问题的问题,但如果它没有尝试,现在包括
-
这种尝试没有任何意义。您没有在显示的同一对象上运行,而是在函数之外返回。请使用 sn-p 编辑器创建minimal reproducible example。
-
您可以将地图与 Set 一起使用:
new Set(organisations.map(({name}) => name)).size; -
减少,无需设置:
const names = organisations.reduce((acc,org) => { if (acc.includes(org.name)) return acc; acc.push(org.name); return acc},[])
标签: javascript