【问题标题】:JSON array iteration: How to apply a function on each element of a json array in javascript? [closed]JSON数组迭代:如何在javascript中对json数组的每个元素应用函数? [关闭]
【发布时间】:2013-05-28 07:50:03
【问题描述】:

我正在尝试对 JSON 数组的每个元素应用 javascript 方法 f(x,y)。

这是我的代码示例:

var jsonData = {"a":[1900,1910,1920,1930],"b":[12,19,8,55]}

for (var i=0; jsonData.a.length; i++){
  f(jsonData.a[i],jsonData.b[i])
}

我做错了吗?代码不工作..

【问题讨论】:

  • “不工作”是什么意思?
  • 什么不起作用?
  • 是的,结束条件无效。愚蠢的错误..谢谢所有

标签: javascript arrays json loops


【解决方案1】:

您的代码进入无限循环。改成

for (var i=0; i < jsonData.a.length; i++){

【讨论】:

    【解决方案2】:

    您需要告诉循环何时停止。

    改变这个:

    for (var i=0; jsonData.a.length; i++){
    

    到这里:

    for (var i=0; i < jsonData.a.length; i++){
    

    【讨论】:

    • 哎呀 :) 没有看到!.. thx
    【解决方案3】:

    问题是你正在陷入无限循环。

    你没有在for循环中指定任何终止条件

    var jsonData = {"a":[1900,1910,1920,1930],"b":[12,19,8,55]}
    
    for (var i=0; i < jsonData.a.length; i++){
      f(jsonData.a[i],jsonData.b[i])
    }
    

    这应该可以。

    【讨论】:

      【解决方案4】:

      您的 for 循环条件无效。应该是:

      var jsonData = {"a":[1900,1910,1920,1930],"b":[12,19,8,55]}
      
      for (var i=0; i < jsonData.a.length; i++){
          f(jsonData.a[i],jsonData.b[i])
      }
      

      【讨论】:

        【解决方案5】:

        您的循环正在检查“jsonData.a.length”,这始终是正确的,因为它正在评估一个正整数。您可以使用for (var i=0; i &lt; jsonData.a.length; i++) {...} 编写循环,或者更好的是,使用“for in”循环:for (var i in jsonData.a) {...}

        【讨论】:

          【解决方案6】:

          另一种解决方案:

          var forEach=Function.prototype.call.bind([].forEach)
          var jsonData = {"a":[1900,1910,1920,1930],"b":[12,19,8,55]}
          function print(x,y){
              console.log(x+":"+y);
          }
          forEach(jsonData.a, function(o,i){
              print(o,jsonData.b[i]);
          });
          

          还有一个可以玩的 JSFiddle:http://jsfiddle.net/sG5st/

          【讨论】:

            猜你喜欢
            • 2021-05-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-08-18
            • 2019-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多