我想将以下字符串'14 2'
转换为两个整数的数组。我该怎么做 ?
将字符串转换为整数数组
IT技术
javascript
2021-03-11 12:58:50
6个回答
适用于现代浏览器的快速浏览器:
'14 2'.split(' ').map(Number);
// [14, 2]`
您可以.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
这+myArray[i]
只是进行数字转换的一种快速方法,如果您确定它们是整数,您可以这样做:
for(var i=0; i<myArray.length; i++) { myArray[i] = parseInt(myArray[i], 10); }
所以......旧线程,我知道,但是......
编辑
@RoccoMusolino 有一个不错的收获;这是一个替代方案:
特尔;博士:
const intArray = [...("5 6 7 69 foo 0".split(' ').filter(i => /\d/g.test(i)))]
错误:"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]
由于您显然想要一个 PURE int 数组,这是一个问题。老实说,直到我将 SO 代码复制粘贴到我的脚本中之前,我才发现这一点......:/
的 (略少-控球) 修正:
var intArray = "5 6 7 69 foo".split(" ").map(Number).filter(Boolean); // [5, 6, 7, 69]
所以,现在即使你有垃圾整数字符串,你的输出也是一个纯整数数组。在大多数情况下,其他人真的很性感,但我确实想提供我最随意的w'actually。不过,我的功劳是它仍然是单线...
希望它可以节省某人的时间!
var result = "14 2".split(" ").map(function(x){return parseInt(x)});
Tushar Gupta 答案的替代方法是:
'14 2'.split(' ').map(x=>+x);
// [14, 2]`
在代码高尔夫中,您可以保存 1 个字符。这里的“+”是“一元加”运算符,作用类似于 parseInt。
其它你可能感兴趣的问题