xer*_*r0x 204
适用于现代浏览器的快速浏览器
'14 2'.split(' ').map(Number);
// [14, 2]`
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 84
您可以.split()
获取一个字符串数组,然后循环将它们转换为数字,如下所示:
var myArray = "14 2".split(" ");
for(var i=0; i<myArray.length; i++) { myArray[i] = +myArray[i]; }
//use myArray, it's an array of numbers
Run Code Online (Sandbox Code Playgroud)
这+myArray[i]
只是一种快速进行数字转换的方法,如果您确定它们是整数,您可以这样做:
for(var i=0; i<myArray.length; i++) { myArray[i] = parseInt(myArray[i], 10); }
Run Code Online (Sandbox Code Playgroud)
Tod*_*odd 35
所以...老线程,我知道,但......
@RoccoMusolino收获很好; 这是另一种选择:
TL; DR:
const intArray = [...("5 6 7 69 foo 0".split(' ').filter(i => /\d/g.test(i)))]
Run Code Online (Sandbox Code Playgroud)
错了:"5 6 note this foo".split(" ").map(Number).filter(Boolean); // [5, 6]
这里列出的更优雅的解决方案存在一个微妙的缺陷,特别是@amillara和@Marcus的其他漂亮的答案.
当字符串数组的元素不是整数时,可能会出现问题,可能是在没有输入验证的情况下.一个人为的例子......
问题:
var effedIntArray = "5 6 7 69 foo".split(' ').map(Number); // [5, 6, 7, 69, NaN]
Run Code Online (Sandbox Code Playgroud)
因为你显然想要一个PURE int数组,这是一个问题.老实说,在我将SO代码复制粘贴到我的脚本中之前,我没有抓住这个......:/
的 (略少-控球) 修正:
var intArray = "5 6 7 69 foo".split(" ").map(Number).filter(Boolean); // [5, 6, 7, 69]
Run Code Online (Sandbox Code Playgroud)
所以,现在即使你有crap int字符串,你的输出也是纯整数数组.其他人在大多数情况下都很性感,但我确实想要提供我的大部分时间.尽管如此,它仍然是一个单行...
希望它节省一些时间!
小智 24
var result = "14 2".split(" ").map(function(x){return parseInt(x)});
Run Code Online (Sandbox Code Playgroud)
Tushar Gupta 答案的替代方法是:
'14 2'.split(' ').map(x=>+x);
// [14, 2]`
Run Code Online (Sandbox Code Playgroud)
在代码高尔夫中,您可以保存 1 个字符。这里的“+”是“一元加”运算符,作用类似于 parseInt。