JavaScript - Object.keys() - 访问顶级对象中的数组/对象

时间:2017-06-23 15:04:15

标签: javascript arrays json object

标题可能令人困惑,但无法想出任何其他方式来表达它。

我有一个函数可以找到联系人对象中每个属性的值,并返回' No Data '如果值为null / empty / undefined,但在每个联系对象中都有一个'地址'带有地址对象的数组,我需要使用类似的方法访问第一个/ [0]索引,这样我就不必手动创建函数来搜索每个addressLine1,addressLine2等属性的值。

基本上,我需要返回' No Data '其中addressLine1,addressLine2等的值为空。

每个对象看起来像这样:

'Items': [
  {
    'property1': 'propertyValue',
    'property2': 'propertyValue',
    'property3': 'propertyValue',
    'addresses': [
      {
        'addressLine1': 'propertyValue',
        'addressLine2': 'propertyValue',
        'addressLine3': 'propertyValue',
      },
      {
        'addressLine1': 'propertyValue',
        'addressLine2': 'propertyValue',
        'addressLine3': 'propertyValue',
      },
      {
        'addressLine1': 'propertyValue',
        'addressLine2': 'propertyValue',
        'addressLine3': 'propertyValue',
      }
    ]
  }
]

我目前访问顶级属性值的代码如下所示:

items.forEach(function(obj) {
    Object.keys(obj).forEach(function (property) {
        if (obj[property] === '' || obj[property] === null || obj[property] === undefined) {
            obj[property] = '*No Data*';
        }
    });
});

1 个答案:

答案 0 :(得分:0)

递归的好用例:

(function nodata(items){
 items.forEach(function(obj) {
 Object.keys(obj).forEach(function (property) {
    if (!obj[property]) {
        obj[property] = '*No Data*';
    }
    if(obj.adresses){
      nodata(obj.adresses);
    }
 });
 });
})(items);