基本上,我试图在一个函数中将数字数组转换为字符串,然后再转换为数字数组(与传入的原始数组完全一样)。
我知道这会将数字数组转换为字符串:
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
中的所有其他元素?这对我来说没有意义。
答案 0 :(得分:2)
第二次尝试(使用parseInt)时,有两个问题:
<=
应该为<
。您应该将该想法与split
尝试真正结合起来。因此,通过应用split(" ")
遍历结果。
但是可以通过将Number
应用于每个带有map
的元素来缩短时间:
return string.split(" ").map(Number)
Number
函数的作用与parseInt
大致相同,不同之处在于它不需要多个参数,当您将其作为参数传递给.map()
时,这一点很重要。
答案 1 :(得分:1)
使用.map()
let array = [ '1','2','3','4']
let arrayOfNumbers = array.map( item => parseInt(item))
答案 2 :(得分:1)
两次使用地图!
let array = [1,2,3,222222222];
let arrayOfStrings = array.map(String);
let arrayOfNumbers = arrayOfStrings.map(Number);
console.log(array, arrayOfStrings, arrayOfNumbers);
答案 3 :(得分:1)
在最后一部分中,您尝试将字符串的每个位置转换为整数,包括空格。因此'1 2 3'变成[1,NaN,2,NaN,3],因为空格不能转换为整数。
此代码的修改后的版本应该可以工作: 函数arrayToStringAndBack(数组){
let string = array.join(" ");
let numbers = string.split(' ');
let newArray = [];
for (let i = 0; i < string.length; i++) {
let number = parseInt(numbers[i]);
newArray.push(number);
}
return newArray;
}
console.log(arrayToStringAndBack([1, 2, 3, 4]));