我有以下字符串 -
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)
反引号是字符串字面量所以我们可以省略括号(因为 split 函数的性质)但它等价于split(',')
. 字符串现在是一个数组,我们只需要使用返回字符串整数的函数来映射每个值,因此x=>+x
(甚至比Number
函数(5 个字符而不是 6 个)更短)等效于:
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
我希望它更清楚一点。
这个很简单,比如:
["1", "2", "3", "4"].map(i=>Number(i))
你可以运行演示。
let result = ["1", "2", "3", "4"].map(i=>Number(i));
console.log(result);
+string
将尝试将字符串更改为数字。然后使用Array.map
函数来改变每个元素。
"1,2,3,4".split(',').map(function(el){ return +el;});