如何使用Ext.iterate(或JS)迭代一个对象数组?

时间:2014-02-10 10:33:51

标签: javascript arrays extjs

我知道网上有很多关于这个问题的答案,但我仍然无法使其发挥作用。

在JSON POST上回调后,我正在检索一个Object of Array。 在浏览器的控制台日志中,数组如下:

 [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

在每个对象内部,有类似的东西:

 id4blob: "1084"

所以我假设数组可能是这样的(如果我错了,请纠正我):

 [{id4blob: "1084"},{id4blob: "2008"}, [...]]

数组存储在名为 stationsParse

的变量中

我想迭代这些值,我找到了

  Ext.iterate

所以我这样做了:

Ext.iterate(stationsParse, function(key, value) {
   console.log(key + value);
});

然后尝试了这个(看起来好像是相同的但是在纯JS中)

for (key in stationsParse) {
  var value = stationsParse[key];
  console.log(key + value);
}

但没有一个正常,我的控制台中没有显示任何内容。 尽管如此,该功能已被很好地触发,我可以将其看到Chrome控制台,但for会被忽略。

我做错了什么? 这是迭代对象数组的正确方法吗?

3 个答案:

答案 0 :(得分:7)

尝试这样的事情:

var stationsParse = [{id: 1, someproperty: 2}, {id: 2, someproperty: 101}];

Ext.each(stationsParse, function(ob){
  Ext.Object.each(ob, function(property, value){
    console.log(property, value);
  });
});

这里我使用Ext.each迭代stationsParse数组中的每个元素。该数组中的每个元素都是一个对象。要迭代对象中的每个属性,我使用Ext.Object.each。 “each”函数都将您想要迭代的变量作为其第一个参数并将函数作为其第二个参数。该函数将在对象的数组/属性的每个元素上运行。

答案 1 :(得分:2)

如果你想使用vanilla JS循环一个数组,一个简单的for循环就可以了。使用点表示法访问每个对象的id4blob属性的值。

for (var i = 0, l = arr.length; i < l; i++) {
  console.log(arr[i].id4blob)
}

for...in循环通常保留用于循环对象的属性。

Demo

答案 2 :(得分:0)

我能够做到这一点:

for (var i in family) {
    console.log( family[i]["name"] );
}
本教程中的{p> Codecademy,其中family是一个对象数组。

我能看到的唯一区别是我的迭代器变量var前面的i