0

我正在尝试对 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])
}

我在做什么错了吗?代码不起作用..

4

6 回答 6

2

您的代码进入无限循环。将其更改为

for (var i=0; i < jsonData.a.length; i++){
于 2013-05-28T07:53:26.437 回答
1

另一种解决方案:

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/

于 2013-05-28T08:05:09.357 回答
1

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

改变这个:

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

对此:

for (var i=0; i < jsonData.a.length; i++){
于 2013-05-28T07:53:36.790 回答
1

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

您没有在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])
}

这应该有效。

于 2013-05-28T07:55:23.093 回答
1

您的 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])
}
于 2013-05-28T07:56:03.980 回答
1

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

于 2013-05-28T07:58:49.733 回答