我有一个类似[“ 1,2,3,4”]的数组。我只是想将这个数组中的数字转换为像[1,2,3,4]的纯整数数组。
这是我到目前为止尝试过的...
var a = ["1,2,3,4"];
var b = a.map(val => val.split(','));
console.log(b); // prints ["1", "2", "3", "4"]
var c = b.map(x => parseInt(x));
console.log(c); // prints [1]
为什么c仅打印[1],而不循环遍历b数组中的所有元素并打印[1,2,3,4]?
答案 0 :(得分:3)
按如下所述使用split()
var a = ["1,2,3,4"];
var b = a[0].split(",").map(x=>parseInt(x));
console.log(b);
答案 1 :(得分:1)
console.log(b); //打印[“ 1”,“ 2”,“ 3”,“ 4”]
这是不正确的,当您将数组中的字符串映射到数组中时,它实际上会打印[["1", "2", "3", "4"]]
(二维数组),因此您仍然维护外部数组。
相反,您可以使用.flapMap()
将数组.split()
的内容映射到外部容器数组,如下所示:
var a = ["1,2,3,4"];
var b = a.flatMap(val => val.split(','));
console.log(b); // prints ["1", "2", "3", "4"]
var c = b.map(x => parseInt(x));
console.log(c); // prints [1, 2, 3, 4]
或者,您也可以在带有JSON.parse
的数组字符串上使用.flatMap
来获取数字数组,如下所示:
var a = ["1,2,3,4"];
var b = a.flatMap(val => JSON.parse(`[${val}]`));
console.log(b); // [1, 2, 3, 4]
不过请注意,.flatMap()
当前确实有limited browser support,因此,如果您有多个元素,则可能要使用.reduce()
:
var a = ["1,2,3,4"];
var b = a.reduce((acc, val) => [...acc, ...val.split(',')], []);
console.log(b); // prints [["1", "2", "3", "4"]]
var c = b.map(x => parseInt(x));
console.log(c); // prints [1, 2, 3, 4]
使用这两种方法的优点是它适用于a
值,其中有多个["1,2,3,4", "5,6,7,8"]
等起始字符串。
答案 2 :(得分:0)
您应该执行以下操作:
var a = "1,2,3,4";
var b = a.split(',') // or a[0].split(",") if you really want to use ["1,2,3,4"]
var c = b.map(x => parseInt(x));
console.log(c);
答案 3 :(得分:0)
您可以使用+
将字符串隐式转换为数字
var a = ["1,2,3,4"];
var b = a[0].split(',').map(v=> +v);
console.log(b);
答案 4 :(得分:0)
您可以通过获取字符串数组来创建嵌套数组。这将返回一个数组数组。
要克服嵌套数组,您首先需要将其展平,然后使用Number
作为回调进行映射
var a = ["1,2,3,4"];
var b = a.flatMap(val => val.split(',')).map(Number);
console.log(b); // [1, 2, 3, 4]