使用reduce汇总javascript对象中特定键的值

使用reduce汇总javascript对象中特定键的值,javascript,javascript-objects,Javascript,Javascript Objects,目标:返回一个数组,列出对象中一个特定键的唯一值 const people = [ {id: 1, name: 'Barb', gender: 'female'}, {id: 2, name: 'Carl', gender: 'male'}, {id: 3, name: 'John', gender: 'male'}, {id: 4, name: 'Jane', gender: 'female'}, {id: 5, name: 'Pete', gender

目标:返回一个数组,列出对象中一个特定键的唯一值

const people = [
    {id: 1, name: 'Barb', gender: 'female'},
    {id: 2, name: 'Carl', gender: 'male'},
    {id: 3, name: 'John', gender: 'male'},
    {id: 4, name: 'Jane', gender: 'female'},
    {id: 5, name: 'Pete', gender: 'male'},
    {id: 6, name: 'Annie', gender: 'female'},
    {id: 7, name: 'Katie', gender: 'female'},
    {id: 8, name: 'Sally', gender: 'female'},
    {id: 9, name: 'Steve', gender: 'male'},
]
期望输出:

['male','female']

可以使用reduce()和Set将类别键缩减为唯一值,如下所示:

返回:
[“女性”、“男性”]

const people=[
{id:1,姓名:'Barb',性别:'female'},
{id:2,姓名:'Carl',性别:'male'},
{id:3,姓名:'John',性别:'Mean'},
{id:4,姓名:'Jane',性别:'female'},
{id:5,姓名:'Pete',性别:'Mean'},
{id:6,姓名:'Annie',性别:'female'},
{id:7,姓名:'Katie',性别:'female'},
{id:8,姓名:'Sally',性别:'female'},
{id:9,姓名:'Steve',性别:'Mean'},
]
const genders=people.reduce((aSex,currItem)=>{
aSex.push(项目性别);
返回aSex
}, [])
let unique=[…新集合(性别)];
console.log(unique)
您可以使用它返回一个数组,列出对象中一个特定键的唯一值

const people = [
    {id: 1, name: 'Barb', gender: 'female'},
    {id: 2, name: 'Carl', gender: 'male'},
    {id: 3, name: 'John', gender: 'male'},
    {id: 4, name: 'Jane', gender: 'female'},
    {id: 5, name: 'Pete', gender: 'male'},
    {id: 6, name: 'Annie', gender: 'female'},
    {id: 7, name: 'Katie', gender: 'female'},
    {id: 8, name: 'Sally', gender: 'female'},
    {id: 9, name: 'Steve', gender: 'male'},
]
  • 创建新集合
  • 使用
    forEach()
    方法遍历数组
  • 检查指定的属性并将该值添加到集合中
  • 最后,返回唯一值数组
const people=[
{id:1,姓名:'Barb',性别:'female'},
{id:2,姓名:'Carl',性别:'male'},
{id:3,姓名:'John',性别:'Mean'},
{id:4,姓名:'Jane',性别:'female'},
{id:5,姓名:'Pete',性别:'Mean'},
{id:6,姓名:'Annie',性别:'female'},
{id:7,姓名:'Katie',性别:'female'},
{id:8,姓名:'Sally',性别:'female'},
{id:9,姓名:'Steve',性别:'Mean'},
];
常量唯一=(键,数组)=>{
常量集=新集();
数组.forEach(
(x) =>Object.prototype.hasOwnProperty.call(x,key)&&set.add(x[key])
);
返回[…设置];
};

console.log(唯一('gender',people))为什么不在第一种情况下使用集合作为累加器?为什么不简单地
const uniqueGenders=[…第一种情况下的新集合(people.map({gender}=>gender))
呢?@NinaScholz自从你问了这个问题后,我一直在努力想办法。。。。这种语法是什么样的?如果从您的角度来看更容易,请随意编辑答案。我想,关键是要做一些事情,比如
const uniqeGenders=[…people.reduce((acc,{gender}=>acc.add(gender),new Set)]
,尽管基于
.map()
的方法(参见我之前的评论)要简单得多。谢谢Yevgen-非常感谢您的演示。