【问题标题】:foreach for JSON array , syntaxforeach for JSON 数组,语法
【发布时间】:2011-12-01 13:21:33
【问题描述】:

我的脚本正在从 php 服务器端脚本获取一些数组。

result = jQuery.parseJSON(result);

现在我想检查数组的每个变量。

if (result.a!='') { something.... }
if (result.b!='') { something.... }
....

有没有更好的方法让它像 php 'foreach' 、 'while' 或 smth 一样快速?

更新

这段代码(感谢 hvgotcodes)为我提供了数组中变量的值,但我怎样才能得到变量的名称呢?

for(var k in result) {
   alert(result[k]);
}

更新 2

这就是php端的工作方式

$json = json_encode(array("a" => "test", "b" => "test",  "c" => "test", "d" => "test"));

【问题讨论】:

  • 如果我没记错的话,您可以使用每个 JSON 对象的名称来访问其属性,就像使用属性一样。例如JSONObject.name 获取 JSONObject 中包含 {'name':'foo'} 的属性

标签: javascript jquery json


【解决方案1】:

你可以这样做

for(var k in result) {
   console.log(k, result[k]);
}

遍历返回的 json 中的所有键并打印值。但是,如果您有嵌套结构,则需要使用

typeof result[k] === "object"

确定是否必须遍历嵌套对象。我使用过的大多数 API,开发人员都知道返回的内容的结构,所以这是不必要的。但是,我认为这种期望可能并不适用于所有情况。

【讨论】:

  • 你会想要方括号。编辑:你修好了。
  • 是的,我实际上是通过在控制台中尝试确定的。 ;)
  • 行得通。但是还有 1 个问题,我怎样才能在数组中获取这些变量的名称?
  • @david,是数组还是对象字面量?
  • @david,更新了答案——k 是键,结果[k] 是值。
【解决方案2】:

当然,你可以使用 JS 的 foreach。

for (var k in result) {
  something(result[k])
}

【讨论】:

    【解决方案3】:

    试试这个:

    $.each(result,function(index, value){
        console.log('My array has at position ' + index + ', this value: ' + value);
    });
    

    【讨论】:

      【解决方案4】:

      您可以使用 JavaScript 的 .forEach() 方法来循环 JSON。

      var datesBooking = [
          {"date": "04\/24\/2018"},
            {"date": "04\/25\/2018"}
          ];
          
          datesBooking.forEach(function(data, index) {
            console.log(data);
          });

      【讨论】:

        猜你喜欢
        • 2019-12-08
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多