我有下面的字符串
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]吗?
当前回答
这很简单。如:
["1", "2", "3", "4"].map(i=>Number(i))
您可以运行演示。 让结果=(“1”、“2”、“3”、“4”). map (i = > (i)); console.log(结果);
其他回答
作为一种变体,你可以使用组合_。Map和_。来自lodash库的多种方法。整个转型将更加紧凑。以下是官方文档中的一个例子:
_.map(['6', '8', '10'], _.ary(parseInt, 1));
// → [6, 8, 10]
如果您需要将字符串数组转换为数字,这将非常有效。
const numbers = arr => arr.map(Number);
numbers(['1', '2', '3','4']); // [1, 2, 3, 4]
我对高尔夫球手的看法:
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
我希望它能更清楚一点。
将其映射为整数:
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);
}
+string将尝试将字符串更改为数字。然后使用Array。映射函数来改变每个元素。
"1,2,3,4".split(',').map(function(el){ return +el;});