我有一个如下所示的对象:
var obj = [
{id: 1, name: 'AD', key: 10},
{id: 2, name: 'AD', key: 20},
{id: 3, name: 'BD', key: 30},
{id: 4, name: 'CD', key: 40}
];
我想过滤并创建一个满足任何条件的新数组。例如:过滤器名称为“AD”并创建一个新的键数组:
[10, 20]
尝试过.map
obj.map(ele => {
return ele.name === 'AD' ? ele.key : null;
}); //it adds even nulls in the result array as [10, 20, null, null]
尝试过.filter:
obj.filter(ele => {
return ele.name === 'AD' ? ele.key : null;
});
Result: [{id: 1, name: "AD", key: 10}, {id: 2, name: "AD", key: 20}] //gives array of objects, not what I'm expecting.
提前致谢
最佳答案
先过滤数组,然后映射获取值:
obj.filter(e => e.name === 'AD').map(e => e.key)
另一个选项是平面 map (检查浏览器兼容性 here )
obj.flatMap(e => e.name === 'AD' ? [e.key] : [])
关于javascript - 过滤并创建一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57523425/