我有下面的字符串

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

当我…

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

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

我能做点什么让b等于[1,2,3,4]吗?


当前回答

Array.from()详情请访问MDN

let a = "1,2,3,4";
let b = Array.from(a.split(','),Number);

or

let c = ["1", "2", "3", "4"].map(Number);

B和c是一个数字数组。

演示:

设a = "1,2,3,4"; let b = Array.from(a.s split(','),Number); let c = ["1", "2", "3", "4"].map(Number); Console.log (' b: ${b}, c: ${c} ');

其他回答

你可以使用数组。映射将每个元素转换为一个数字。

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;
};

你可以在一行中将字符串数组转换为数字数组:

const arrayOfNumbers = arrayOfStrings.map(e => +e);
let ar = [ '682',    '874',    '906',    '11168',  '73714',
  '74377',  '74034',  '138860', '138891', '139161', '139562',
  '139733', '139560', '74049',  '139759', '139934', '140104',
  '141335', '141356', '141334', '141337', '141360', '141358',
  '141365', '141419', '143333', '151477', '147342', '141355',
  '167847', '192141', '196760', '191687', '197351', '197055',
  '198852', '198731', '198816', '199034', '200053', '199226',
  '217818', '200055', '222039', '230533', '230530', '231127',
  '222042', '231100', '236171', '236913', '236980', '237015',
  '237016', '237052', '237551', '237560', '237590', '237637',
  '237733', '237731', '237655', '238890', '238910', '238837',
  '238926', '238972', '238925', '239755', '239696', '239898',
  '240037', '239909', '240036', '240082', '240097', '240526',
  '240770', '678151', '678950', '678985'];
let arry=[]
ar.map(arr=>{
arry.push(parseInt(arr))
});

console.log(arry);

+string将尝试将字符串更改为数字。然后使用Array。映射函数来改变每个元素。

"1,2,3,4".split(',').map(function(el){ return +el;});

这很简单。如:

["1", "2", "3", "4"].map(i=>Number(i))

您可以运行演示。 让结果=(“1”、“2”、“3”、“4”). map (i = > (i)); console.log(结果);