我有下面的字符串

var a = "1,2,3,4";

当我…

var b = a.split(',');

我得到b为["1","2","3","4"]

我能做点什么让b等于[1,2,3,4]吗?


当前回答

你可以使用数组。映射将每个元素转换为一个数字。

var a = "1,2,3,4";

var b = a.split(',').map(function(item) {
    return parseInt(item, 10);
});

检查文档


或者像User: thg435所指出的那样更优雅

var b = a.split(',').map(Number);

Number()将完成其余的工作:检查这里


注意:对于不支持map的旧浏览器,你可以自己添加一个实现:

Array.prototype.map = Array.prototype.map || function(_x) {
    for(var o=[], i=0; i<this.length; i++) { 
        o[i] = _x(this[i]); 
    }
    return o;
};

其他回答

使用Array.from,试试这个:

Let b = ["1", "2", "3", "4"]; b = Array.from(b,Number); console.log (b);

你可以使用数组。映射将每个元素转换为一个数字。

var a = "1,2,3,4";

var b = a.split(',').map(function(item) {
    return parseInt(item, 10);
});

检查文档


或者像User: thg435所指出的那样更优雅

var b = a.split(',').map(Number);

Number()将完成其余的工作:检查这里


注意:对于不支持map的旧浏览器,你可以自己添加一个实现:

Array.prototype.map = Array.prototype.map || function(_x) {
    for(var o=[], i=0; i<this.length; i++) { 
        o[i] = _x(this[i]); 
    }
    return o;
};

这很简单。如:

["1", "2", "3", "4"].map(i=>Number(i))

您可以运行演示。 让结果=(“1”、“2”、“3”、“4”). map (i = > (i)); console.log(结果);

+string将尝试将字符串更改为数字。然后使用Array。映射函数来改变每个元素。

"1,2,3,4".split(',').map(function(el){ return +el;});

使用arraw函数的Matt Zeunert版本(ES6)

const nums = a.split(',').map(x => parseInt(x, 10));