我有下面的字符串
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]吗?
当前回答
将其映射为整数:
a.split(',').map(function(i){
return parseInt(i, 10);
})
Map查看每个数组项,将其传递给所提供的函数,并返回一个包含该函数返回值的数组。map在旧的浏览器中是不可用的,但是大多数库,如jQuery或underscore都有一个跨浏览器版本。
或者,如果你喜欢循环:
var res = a.split(",");
for (var i=0; i<res.length; i++)
{
res[i] = parseInt(res[i], 10);
}
其他回答
你可以使用数组。映射将每个元素转换为一个数字。
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;
};
使用arraw函数的Matt Zeunert版本(ES6)
const nums = a.split(',').map(x => parseInt(x, 10));
使用Array.from,试试这个:
Let b = ["1", "2", "3", "4"]; b = Array.from(b,Number); console.log (b);
一个衬套
Array.from(a.split(','), Number)
由于所有的答案都允许包含NaN,所以我想补充一句,如果您想快速地将一个混合值的数组转换为数字,您可以这样做。
var a = "1,2,3,4,foo,bar";
var b = a.split(',');
var result = b.map(_=>_|0) // Floors the number (32-bit signed integer) so this wont work if you need all 64 bits.
// or b.map(_=>_||0) if you know your array is just numbers but may include NaN.