我有这个对象:
let arr = [{
id : 1,
usr : 'pimba',
xyz: null
},
{
id : 2,
usr : 'aloha',
xyz: {
xyz_id: 2
}
},
{
id : 3,
age : 'pruu',
xyz: null
}];
正如您所注意到的,有时 xyz
为空,有时则不是。
我需要识别它是否为 null,以便我可以读取它。
我试图使用 map()
函数,但我无法将某种过滤器设置为仅在匿名函数不为空时才执行。
我设法做了这样的事情:
let result = Object.values(arr).map(function(row){
if(row['xyz'] != null) {
console.log(row['xyz_id']);
}
});
如果我想要一个仅包含 xyz_id
的新数组怎么办?有更短的版本吗?
第二种情况:
xyz
中有超过 1 个值,并且它不是“命名的”。
let arr = [{
id : 1,
usr : 'pimba',
xyz: null
},
{
id : 2,
usr : 'aloha',
xyz: {
xyz_id: {"value1Here", "Value2Here"}
}
},
{
id : 3,
age : 'pruu',
xyz: null
}];
最佳答案
您似乎只想为具有非空 xyz
属性的元素映射数组。一种选择是同时使用 .filter
和 .map
方法。另一种选择是使用 .reduce
方法:
let result = arr.reduce(function(ret, row) {
// assuming `xyz` can be only `null` or an object
if ( row.xyz !== null ) {
ret.push(row.xyz.xyz_id);
}
return ret;
}, []);
关于javascript - 通过对象的内部数组进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52633227/