我正在尝试对 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])
}
我在做什么错了吗?代码不起作用..
我正在尝试对 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])
}
我在做什么错了吗?代码不起作用..
您的代码进入无限循环。将其更改为
for (var i=0; i < jsonData.a.length; i++){
另一种解决方案:
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/
您需要告诉循环何时停止。
改变这个:
for (var i=0; jsonData.a.length; i++){
对此:
for (var i=0; i < jsonData.a.length; i++){
问题是你正在陷入无限循环。
您没有在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])
}
这应该有效。
您的 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])
}
您的循环正在检查“jsonData.a.length”,这始终是正确的,因为它正在评估一个正整数。for (var i=0; i < jsonData.a.length; i++) {...}
您可以使用或更好地使用“for in”循环编写循环:for (var i in jsonData.a) {...}