如何将数字字符串转换为数字数组?

2022-08-30 00:25:15

我有下面的字符串 -

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

当我这样做 -

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

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

我可以做点什么来得到吗?b[1, 2, 3, 4]


答案 1

您可以使用 将每个元素转换为数字。Array.map

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

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

查看文档


或者更优雅地如用户指出的那样: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;
};

答案 2

我为高尔夫球手准备的2美分:

b="1,2,3,4".split`,`.map(x=>+x)

backquote 是字符串 litteral,所以我们可以省略括号(因为拆分函数的性质),但它等效于 。字符串现在是一个数组,我们只需要用一个返回字符串整数的函数映射每个值,因此(它甚至比函数短(5个字符而不是6个字符))等价于:split(',')x=>+xNumber

function(x){return parseInt(x,10)}// version from techfoobar
(x)=>{return parseInt(x)}         // lambda are shorter and parseInt default is 10
(x)=>{return +x}                  // diff. with parseInt in SO but + is better in this case
x=>+x                             // no multiple args, just 1 function call

我希望它更清晰一些。