Nodejs - 迭代嵌套JSON数组的正确方法

时间:2014-03-28 09:54:46

标签: javascript json node.js

考虑以下示例JSON数组:

[{
    info: {
        refOne: 'refOne',
        refTwo: [{
            refOne: 'refOne',
            refTwo: 'refTwo'
        }]
    }
}, {
    info: {
        refOne: 'refOne',
        refTwo: [{
            refOne: 'refOne',
            refTwo: 'refTwo'
        }]
    }
}]

上面的JSON是数据库查询响应的简单表示,Nodejs循环遍历每个' refTwo的正确方法是什么?父信息数组中的数组?

sudo示例:  对于样本JSON中的每个项目   对于当前项目中的每个refTwo项目     做点什么

我怀疑“async'这里可能需要lib,但非常感谢一些建议。

2 个答案:

答案 0 :(得分:10)

这是一个简单的JavaScript问题:

var o = [...];

var fn = function (e){
    e.refOne...
    e.refTwo...
};

o.forEach (function (e){
    e.info.refTwo.forEach (fn);
});

答案 1 :(得分:2)

您可以使用underscorelodash以功能方式执行此操作。

例如,请查看Collections.eachCollections.map

var _ = require('underscore');

var result = // your json blob here

var myRefs = _.map(results, function(value, key) {
  return value.info.refTwo;
};
// myRefs contains the two arrays from results[0].info.refTwo from results[1].info.refTwo now

// Or with each:
_.each(results, function(value, key) {
  console.log(value.info.refTwo);
}

// Naturally you can nest, too:
_.each(results, function(value, key) {
  _.each(value.info.refTwo, function(innerValue) { // the key parameter is optional
    console.log(value);
  }
}

编辑:你当然可以使用Gabriel Llamas建议的forEach方法,不过我建议你看看下划线。