迭代对象内的数组的各个值

时间:2015-05-19 13:39:53

标签: javascript

嘿伙计们,我有一个非常复杂的数组对象文字,我试图遍历,下面是对象文字:

var all_locations = {
        'bangalore city' : ['bangalore city'],
        'bellary division' : ['bellary district' , 'koppala district' , 'davanagere district' , 
                                'shimoga district' , 'haveri district'],
        'mangalore division' : ['dakshina kanada district' , 'chikkamagalur district' , 'upupi district'],
        'kolar division' : ['kolar district' , 'chikkaballapura district' , 'bangalore rural district' ,
                           'citradurga district' , 'tumkur district'],
        'raichur division' : ['raichur district' , 'yadgir district' , 'gulbarga district' , 'bidar district'],
        'mysore division' : ['maysore district' , 'mandya district' , 'chamarajanagara district' , 'kodau district' , 
                             'hasan district'],
        'hubli devision' : ['dharwad district' , 'gadag district' , 'belgaum district' ,
                             'bagalkote district' , 'bijapur district']                                                  
    }

我正在使用Object.keys来遍历上面的对象文字,使用下面的for循环:

for (var i = 0; i < Object.keys(all_locations).length ; i++) {
        for (var j = 0; j < all_locations[Object.keys(all_locations)[i]].length ; j++) {
            console.log(all_locations[Object.keys(all_locations)[i]])
        }
    }

问题在于这句话,console.log(all_locations[Object.keys(all_locations)[i]])
 我没有访问里面的数组属性,这是我想做的?

我在SO here.上看到了这个帖子,但是即使经过那个答案中的所有解决方案(Eric的最后一个解决方案看起来很有希望,但仍然没有解决我的问题),所以我如何访问里面的属性:

all_locations[Object.keys(all_locations)[i]] ??

编辑::

小例子,在循环的第一次迭代中,我得到以下结果:

Array [ "bangalore city" ]

我想要的是字符串"bangalore city"

谢谢。

亚历-Z。

1 个答案:

答案 0 :(得分:2)

@AlexChar当然有正确的answerconsole.log(all_locations[Object.keys(all_locations)[i]][j])),但你可以通过使用迭代数组和/或使用语义名称来改变变量的函数式来轻松避免这些问题:

Object.keys(all_locations).forEach(function(division){
  all_locations[division].forEach(function(district) {
    console.log(district);
  });
});