这是我的代码:
var array = [{"number":"500","title":"whatever 500"},{"number":"400","title":"whatever 400"}];
alert(array[0].number); //should output 500
$.each(array, function(index, val)
{
array[index].number = val * 5;
});
alert(array[0].number); //should output 2500
我正在尝试将我的数组中的所有numbers
乘以5.但由于某种原因,它不起作用。它输出NaN
(非数字)。当我尝试添加50时,它会输出[object Object]50
。
有人可以告诉我这里我做错了吗?
答案 0 :(得分:2)
问题是val
是对象,而不是它的特定值。因此,您试图将{"number":"500","title":"whatever 500"}
乘以5
,这无疑不起作用。
您可以使用this
来引用循环中的当前元素。您的代码可能如下所示:
$.each(array, function() {
this.number = this.number * 5;
});
事实上,您可以使用*=
assignment operator:
$.each(array, function() {
this.number *= 5;
});
答案 1 :(得分:1)
这是正确的each
:
$.each(array, function(index, val)
{
array[index].number = val.number * 5;
});
您正在迭代数组中的对象,因为array
包含对象。示例中的第一个val
等于{"number":"500","title":"whatever 500"}
答案 2 :(得分:-2)
“500”不是数字(NaN),它是一个字符串。
尝试使用此数组:
var array = [{"number":500,"title":"whatever 500"},{"number":400,"title":"whatever 400"];