【发布时间】:2016-07-07 05:36:18
【问题描述】:
这个函数的目的是去除给定String的空格,然后将其转换为Number,最后将数字的每个字符压入一个空数组(即“24532”,应该压入数组中在 [2,4,5,3,2] 之后)。但是,当我在函数末尾控制台输出数组时——我在输出数组中收到 NaN 值。函数中的每一步对我来说都是有意义的,但我不确定我的错误在哪里。任何帮助将不胜感激!
function convert(numbers){
var notString = parseInt(numbers.replace(/\s+/g, ''), 10),
sNumber = notString.toString(),
output =[];
console.log(sNumber);
for(var i = 0; i < sNumber.length; i+=1) {
output.push(+sNumber.charAt[i]);
}
console.log(output);
}
convert("1 2 2 2 2");
【问题讨论】:
-
问题是你在
charAt之后有[]而不是()。所以应该是+sNumber.charAt(i)。现在它调用函数而不是访问它的属性。 -
表达式“sNumber.charAt[i]”未定义。 (Javascript 不介意您尝试取消引用函数)。一元加号运算符试图将 undefined 转换为数字并生成 NaN 并将其推送到您的数组中。 (
push(+sNumber.charAt[i]) ~~> push(+undefined) ~~> push(NaN))。您的示例实际上以 5 x NaN 的数组结束
标签: javascript arrays parsing nan