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,