我有下面的字符串

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

当我…

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

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

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


当前回答

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

其他回答

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

一个衬套

Array.from(a.split(','), Number)

作为一种变体,你可以使用组合_。Map和_。来自lodash库的多种方法。整个转型将更加紧凑。以下是官方文档中的一个例子:

_.map(['6', '8', '10'], _.ary(parseInt, 1));
// → [6, 8, 10]

我对高尔夫球手的看法:

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

我希望它能更清楚一点。

由于所有的答案都允许包含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.