繁体   English   中英

使用JavaScript遍历JSON数组中的对象

[英]Iterating over objects in a JSON array with JavaScript

我正在尝试重写.php多维数组和foreach循环(在http://tutorialzine.com/2010/03/sponsor-wall-flip-jquery-中的“ Sponsor Flip Wall” jQuery示例中使用的那个) css / ),因为不幸的是我被迫使用的Web主机不支持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循环中的for循环。

我一直在寻找如何迭代JSON结构的答案 但是似乎它们的数组仅包含两个值-一个对象和一个键。 我的每个对象都有多个字段,所以我不认为它完全适用吗? 否则,我不知道如何扩展?

我正在尝试重新创建.php foreach循环:

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

有任何想法吗? (如果可能的话,我希望我的答案完全是用JavaScript而不是jQuery编写的)

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

使用标准的for循环会很好地工作,只要您知道数据的键名即可!

尝试:

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

忘记for (var i = ...for i in ...并使用underscore.js可以在所有浏览器中使用,并且易于使用。因此,例如使用_.each()

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

看看这个问题并在这里回答,与您要问的非常相似。

JavaScript替代“ for each”循环

你可以试试这个

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM