使用javascript循环对象数组

乔纳森

我正在尝试遍历以下内容:

{
    "machine": [{
        "cost_center": "15023 DC1 M3 - Hassia1",
        "item": [{
            "batchno": "367721",
            "itemno": "12028"
        }, {
            "batchno": "367722",
            "itemno": "12328"
        }, {
            "batchno": "367723",
            "itemno": "12608"
        }]
    }, {
        "cost_center": "15033 DC1 M4 - Hamba",
        "item": [{
            "batchno": "367729",
            "itemno": "11850"
        }, {
            "batchno": "367730",
            "itemno": "11851"
        }, {
            "batchno": "367731",
            "itemno": "11852"
        }]
    }, {
        "cost_center": "15043 DC1 M5 - 1KG Machine",
        "item": {
            "batchno": "367732",
            "itemno": "12592"
        }
    }]
}

var json = '{"machine":[{"cost_center":"15023 DC1 M3 - Hassia1","item":[{"batchno":"367721","itemno":"12028"},{"batchno":"367722","itemno":"12328"},{"batchno":"367723","itemno":"12608"}]},{"cost_center":"15033 DC1 M4 - Hamba","item":[{"batchno":"367729","itemno":"11850"},{"batchno":"367730","itemno":"11851"},{"batchno":"367731","itemno":"11852"}]},{"cost_center":"15043 DC1 M5 - 1KG Machine","item":{"batchno":"367732","itemno":"12592"}}]}';

var obj = JSON.parse(json);
var db = obj.machine;

for (var m in db) {
    if (db.hasOwnProperty(m)) {
        var item = db[m].item;
        console.log('cost_center ' + m + ' = ' + db[m].cost_center);
        for (var i in item) {
            if (item.hasOwnProperty(i)) {
                var prod = item[i];
                console.log('-itemno ' + i + ' ' + prod.itemno);
            }
        }
    }
}

我在这里发现了类似的问题但不同之处在于我的数据,我的前 2 个 cost_centers 将数组作为元素,我的第三个不是数组。

COST_CENTER 0 = 15023 DC1 M3 - Hassia1
-itemno 0 12028
-itemno 1 12328
-itemno 2 12608
COST_CENTER 1 = 15033 DC1 M4 - Hamba
-itemno 0 11850
-itemno 1 11851
-itemno 2 11852
COST_CENTER 2 = 15043 DC1 M5 - 1KG机
- itemno batchno undefined
-itemno itemno undefined

如何遍历所有内容并仍然从不包含数组的 cost_center 中获取所有值?谢谢

斯莱

不需要hasOwnPropertyitem.constructor === Array可用于检查:

var db = JSON.parse('{"machine":[{"cost_center":"15023 DC1 M3 - Hassia1","item":[{"batchno":"367721","itemno":"12028"},{"batchno":"367722","itemno":"12328"},{"batchno":"367723","itemno":"12608"}]},{"cost_center":"15033 DC1 M4 - Hamba","item":[{"batchno":"367729","itemno":"11850"},{"batchno":"367730","itemno":"11851"},{"batchno":"367731","itemno":"11852"}]},{"cost_center":"15043 DC1 M5 - 1KG Machine","item":{"batchno":"367732","itemno":"12592"}}]}').machine;

for (var m = 0; m < db.length; m++) 
{
  var e = db[m], item = e.item;
  console.log('cost_center ' + m + ' = ' + e.cost_center);

  if (item.constructor === Array)
    for (var i = 0; i < item.length; i++) 
      console.log('  itemno ' + i + ' = ' + item[i].itemno);
  else
    console.log('  itemno 0 = ' + item.itemno);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章