我如何以适当的表示法迭代数组内的对象?

时间:2013-04-08 08:06:06

标签: javascript jquery ajax node.js

我阅读了Javascript The Good Parts,并了解到使用for (i in blah) {}是一种不好的符号,但问题是,我正在使用Node.js和我正在使用的数据库MongoDB将所有查询返回为objects,这很好。现在我有一个ajax查询从表中提取所有信息,我想用每个值做事情。

但是数据库返回的是一个包含对象的数组(随机大小取决于数据库中的数据),为清楚起见,我将举例说明:

[
 {
  'a': 'value of a',
  'b': 'value of b',
  'c': 'value of c'
 },
 {
  'a': 'value of a',
  'b': 'value of b',
  'c': 'value of c'
 }
]

我如何遍历每个事物,以便我可以从每个事件中分配变量,这就是我所做的工作:

 for (var i = 0; i < data.success.length; i += 1) {
      for(x in data.success[i]) {
        console.log(x);
      }
    }

我只是担心糟糕的符号最终会咬我,我读到(blah in blah)符号并不总是按顺序返回结果。这是有必要的。希望我明白了,谢谢。

我需要获取值,而不是对象中变量的名称。

1 个答案:

答案 0 :(得分:4)

Object.keys(data.success[i])将为您提供对象中存在的所有键,然后您可以.sort保证排序顺序。

data.success.forEach(function(item, n) {
   console.log('item ' + n);
   Object.keys(item).sort().forEach(function(key) {
      console.log(key + ':' + item[key]);
   });
});