0

我正在尝试重写一个 .php 多维数组和 foreach 循环(在http://tutorialzine.com/2010/03/sponsor-wall-flip-jquery-找到的“赞助商翻转墙”jQuery 示例中使用的那个循环css/)在 JSON/JavaScript 中,不幸的是我被迫使用的 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 有直接的比较?经过研究,似乎我需要在 for 循环中使用 jQuery $.each或 for 循环。

我正在查看如何迭代 JSON 结构的答案?但似乎他们的数组只包含两个值——一个对象和一个键。我的每个对象有多个字段,所以我认为它不完全适用?或者如果是这样,我不知道如何扩展它?

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

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

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

4

5 回答 5

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

如果您知道数据的键名,则使用标准 for 循环会很好地工作!

于 2013-06-11T11:21:23.633 回答
1

尝试:

sponsors.forEach(function(sp) {
    console.log(sp.name);
    console.log(sp.description);
});
于 2013-06-11T11:26:34.553 回答
1

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

_(array).each(function(item) {
  // Works everywhere
});
于 2013-06-11T11:32:28.473 回答
0

在此处查看此问题和答案,与您所问的非常相似。

JavaScript 替代“for each”循环

于 2013-06-11T11:25:47.540 回答
0

你可以试试这个

for( var i = 0; i < sponsors.length; i++) {
    var sponsor = sponsors[i];
    document.writeln(sponsor.name + ":" + sponsor.description + "(" + sponsor.website + ")");        
}
于 2013-06-11T11:25:51.327 回答