【问题标题】:Iterating over objects in a JSON array with JavaScript使用 JavaScript 遍历 JSON 数组中的对象
【发布时间】:2013-06-07 05:25:59
【问题描述】:

我正在尝试用 JSON/JavaScript 重写一个 .php 多维数组和 foreach 循环(在 http://tutorialzine.com/2010/03/sponsor-wall-flip-jquery-css/ 找到的“赞助商翻转墙”jQuery 示例中使用的那个),不幸的是我正在成为的 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 循环。

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

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

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

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

【问题讨论】:

    标签: javascript jquery json multidimensional-array foreach


    【解决方案1】:
    for( var i = 0; i < sponsors.length; i++) {
        var sponsor = sponsors[i];
        console.log(sponsor.name);
    }
    

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

    【讨论】:

      【解决方案2】:

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

      JavaScript alternative to "for each" loop

      【讨论】:

        【解决方案3】:

        你可以试试这个

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

        【讨论】:

          【解决方案4】:

          试试:

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-11-10
              • 2022-08-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-03-13
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多