考虑以下对象数组
const data = [{
name: 'James',
sex: 'male',
}, {
name: 'Mike',
sex: 'male',
}, {
name: 'Janet',
sex: 'female',
}, {
name: 'Mary',
sex: 'female',
}];
我想返回以下内容:
{
males: [{
name: 'James',
sex: 'male',
}, {
name: 'Mike',
sex: 'male',
}]
females: [{
name: 'Janet',
sex: 'female',
}, {
name: 'Mary',
sex: 'female',
}]
}
我试过映射数组,按键选择对象,然后将它们添加到新数组,结果是两个数组。从那里开始,我不知道如何以简洁的方式将它们返回到新对象中。
我不太熟悉 ES6 中的数组过滤/归约方法,它们在这里有用吗?任何帮助表示赞赏!
最佳答案
你可以使用reduce
const data = [{
name: 'James',
sex: 'male',
}, {
name: 'Mike',
sex: 'male',
}, {
name: 'Janet',
sex: 'female',
}, {
name: 'Mary',
sex: 'female',
}];
const result = data.reduce((c, v) => {
c[v.sex] = c[v.sex] || []; //Initiate if key does not exist
c[v.sex].push(v); //Push the value
return c;
}, {});
console.log(result);
如果你希望键是复数,你可以只添加's'
const result = data.reduce((c, v) => {
let k = v.sex + 's';
c[k] = c[k] || []; //Initiate if key does not exist
c[k].push(v); //Push the value
return c;
}, {});
关于javascript - 按对象键减少/过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50270287/