【发布时间】:2019-04-24 18:30:36
【问题描述】:
本质上,我试图将一个数字数组转换为一个字符串,然后在单个函数中返回一个数字数组(与传入的原始数组完全一样)。
我知道这会将一个数字数组变成一个字符串:
function arrayToStringAndBack (array) {
return array.join(" ");
}
console.log(arrayToStringAndBack([1, 2, 3, 4]));
1 2 3 4
但是现在,如果我想将该字符串转回一个数组,这将返回带有每个数字的引号的数组(作为字符串数字数组):
function arrayToStringAndBack (array) {
let string = array.join(" ");
return string.split(" ");
}
console.log(arrayToStringAndBack([1, 2, 3, 4]));
[ '1', '2', '3', '4' ]
我想要做的是把这个字符串1 2 3 4变成一个数字数组[1, 2, 3, 4]。
我的想法是遍历字符串中的每个元素,使用 .parseInt() 将元素转换为数字,然后将该数字推入新数组:
function arrayToStringAndBack (array) {
let string = array.join(" ");
let newArray = [];
for (let i = 0; i <= string.length; i++) {
let number = parseInt(string[i]);
newArray.push(number);
}
return newArray;
}
console.log(arrayToStringAndBack([1, 2, 3, 4]));
但是你可以看到这个日志:
[1, NaN, 2, NaN, 3, NaN, 4, NaN]
为什么numbers NaN 中的所有其他元素都存在?这对我来说没有意义。
【问题讨论】:
-
映射到号码:
string.split(" ").map(Number) -
提示:当你执行
parseInt(" ")时会发生什么? -
我猜你不必担心两位数?
-
@James 我想说明两位数,是的。我的代码目前不包含两位数怎么办?
-
@HappyHands31 您一次一个字符地遍历字符串是问题所在。
标签: javascript arrays string for-loop