使用JavaScript迭代JSON数组中的对象

时间:2013-06-11 11:18:26

标签: javascript jquery json multidimensional-array foreach

我正在尝试在JSON / JavaScript中重写.php多维数组和foreach循环(在http://tutorialzine.com/2010/03/sponsor-wall-flip-jquery-css/中找到的“Sponsor Flip Wall”jQuery示例中使用的循环),不幸的是Web主机I我被迫使用没有PHP支持。

该数组最初看起来如下:

$sponsors = array(
array('facebook','The biggest social network in the world.','http://www.facebook.com/'),
array('adobe','The leading software developer targeted at web designers and developers.','http://www.adobe.com/'),
array('microsoft','One of the top software companies of the world.','http://www.microsoft.com/')
);

我现在有以下内容:

var sponsors = [
    { "name": "facebook", "description": "The biggest social network in the world.", "website": "http://www.facebook.com/" },
    { "name": "adobe", "description": "The leading software developer targeted at web designers and developers.", "website": "http://www.adobe.com/" },
    { "name": "microsoft", "description": "One of the top software companies of the world.", "website": "http://www.microsoft.com/" },
];

但是我对foreach循环感到困惑,因为我不相信JavaScript有直接的比较?经过研究,我似乎需要使用jQuery $。each 或for循环中的循环。

我正在查看How do I iterate over a JSON structure?的答案,但似乎他们的数组只包含两个值 - 一个对象和一个键。我的每个对象有多个字段,所以我认为它不完全适用?或者如果确实如此,我不知道如何扩展它?

我试图重新创建的.php foreach循环:

foreach($sponsors as $company)
    {
        echo $company[0] . ":" . $company[1] . "(" . $company[2] . ")"; //eg.
    }

有什么想法吗? (我希望我的答案纯粹是用JavaScript编写的,而不是jQuery,如果可能的话)

5 个答案:

答案 0 :(得分:1)

for( var i = 0; i < sponsors.length; i++) {
    var sponsor = sponsors[i];
    console.log(sponsor.name);
}

使用标准for循环将很有效,让您知道数据的密钥名称!

答案 1 :(得分:1)

尝试:

sponsors.forEach(function(sp) {
    console.log(sp.name);
    console.log(sp.description);
});

答案 2 :(得分:1)

忘记 for (var i = ...for i in ...并使用underscore.js 它适用于所有浏览器,易于使用。所以只需使用例如_.each()

_(array).each(function(item) {
  // Works everywhere
});

答案 3 :(得分:0)

看看这个问题并在这里回答,与你提出的问题非常相似。

JavaScript alternative to "for each" loop

答案 4 :(得分:0)

你可以试试这个

for( var i = 0; i < sponsors.length; i++) {
    var sponsor = sponsors[i];
    document.writeln(sponsor.name + ":" + sponsor.description + "(" + sponsor.website + ")");        
}