简单问题: 我正在尝试将数字添加到这样的数组中:
sorted[4][2]+=nbrMvt[i];
但它添加了两个数字,好像它们是字符串一样。输出只是将数字放在另一个旁边...... 我试过这些方法:
sorted[4][2]+=parseInt(nbrMvt[i]);
sorted[4][2]=sorted[4][2]+nbrMvt[i];
sorted[4][2]=parseInt(sorted[4][2])+parseInt(nbrMvt[i]);
但它们都不起作用。
[编辑]
好的,这就是我创建数组的方式:
var sorted = MultiDimensionalArray(13,4);
然后我将字符串值赋值给sorted [x] [0 ... 12]
最后一个例子给了我“NaNNaNNaNNaN”左
function MultiDimensionalArray(iRows,iCols)
{
var i;
var j;
var a = new Array(iRows);
for (i=0; i < iRows; i++)
{
a[i] = new Array(iCols);
for (j=0; j < iCols; j++)
{
a[i][j] = "";
}
}
return(a);
}
(顺便说一句,从我的问题投票中我应该了解什么?)
答案 0 :(得分:1)
你可能没有设置一些值(也许是i === null或somthing)......但是这样可行:
var sorted = [],
nbrMvt = [],
i = 0;
// set up arrays and populate just enough values...
nbrMvt[i] = 40;
sorted[4] = [];
sorted[4][2] = 2;
sorted[4][2]=parseInt(sorted[4][2])+parseInt(nbrMvt[i]);
document.write(sorted[4][2]);
答案 1 :(得分:0)
如果您x+=4
NaN
x
,如果之前是null
或undefined
,则会+=
。
最好先用号 0
填充x+=4
的内容。
如果"104"
x
"10"
,如果字符串 x+=y
之前的"104"
,则不是数字 10。
如果您x
x
10
,即使"4"
以前编号为+foo
,但y 字符串 {{1}} }。
最好显式转换为数字(使用{{1}};这是一元加号,而不是加法运算符,这是在Javascript中强制数字强制的最短方法)如果你想要数字算术。
答案 2 :(得分:0)
您的MultiDimensionalArray(iRows,iCols)
函数将数组内容定义为字符串。当您尝试向数组中的元素添加数字时,例如:sorted[4][2] += 2
它只是连接到该字符串。
然而,即使在那种情况下,以下内容仍然有效:
sorted[4][2] = parseInt(sorted[4][2])+parseInt(nbrMvt[i]);
除非 nbrMvt[i]
格式无效,导致parseInt()
返回NaN
。这也将使总和NaN
。
以下是jsFiddle与您类似的工作代码,只需对您的MultiDimensionalArray()
函数进行少量重写。