如何将数字字符串转换为数字数组?
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]
我有下面的字符串 -
var a = "1,2,3,4";
当我这样做 -
var b = a.split(',');
我得到b
["1", "2", "3", "4"]
我可以做点什么来得到吗?b
[1, 2, 3, 4]
您可以使用 将每个元素转换为数字。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美分:
b="1,2,3,4".split`,`.map(x=>+x)
backquote 是字符串 litteral,所以我们可以省略括号(因为拆分函数的性质),但它等效于 。字符串现在是一个数组,我们只需要用一个返回字符串整数的函数映射每个值,因此(它甚至比函数短(5个字符而不是6个字符))等价于:split(',')
x=>+x
Number
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
我希望它更清晰一些。