Node.JS / Javascript – 将string转换为整数是当我不期望它返回NaN

这是一个更大的程序的背景下,所以我会尽量保持简单,只显示违规行。 我有一个值为数组的stringforms的数组拉,“84”,“32”等

然而,这条线

console.log(unsolved.length + " " + unsolved[0] + " " + parseInt(unsolved[0]) + " " + parseInt("84")); 

打印:

 4 "84" NaN 84 

“84”是数组元素Im试图parseInt! 然而,除非我把它从数组的上下文中取出并明确地写出来,否则它将不起作用。 这是怎么回事?

您可以尝试使用此函数从要处理的string中删除引号:

 function stripAlphaChars(source) { var out = source.replace(/[^0-9]/g, ''); return out; } 

你也应该明确地指定你想parsing一个基数为10的数字:

 parseInt(unsolved[0], 10); 

parseInt会从其看起来像一个数字的参数的开始处取一切,而忽略其余部分。 在你的情况下,你调用它的参数以"开始,所以没有看起来像一个数字,它试图投射一个空string,这实际上不是一个数字。

你应该确保数组元素确实是一个可以parsing成数字的string。 你的数组元素不包含值'84' ,但实际上是值'"84"' (一个string包含数字封装)

你会想要从你的数组元素中删除,可能是这样的:

 function removeQuotationMarks(string) { return (typeof string === 'string') ? string.replace(/"|'/g, '') : string; } unsolved = unsolved.map(removeQuotationMarks); 

现在所有的数组元素都应该准备parseInt(unsolved[x], 10)来parsing,