javascript - 通过对象的内部数组进行映射

标签 javascript

我有这个对象:

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/

相关文章:

javascript - Jquery 将元素放入另一个元素之后

javascript - d3.js 图像 x 和 y 属性

javascript - InfiniteScroll 和自定义行为

javascript - 计时器在 d3.js 中运行时是否可以改变时间间隔?

Javascript:使用遍历从 JSON 对象获取引用

javascript - 在 Bootstrap 4 和 React 中使用模块化 CSS

javascript - Google-Big Query with JavaScript

javascript - 类型错误 : Cannot read property 'events' of undefined

javascript - 如何获得2个字符串之间的所有匹配项?

javascript - 从选择的 onChange 调用 javascript 函数