JavaScript如何将字符串数组转换为数字二维数组
问题原因
- 第一个错误点:
Array.forEach()方法本身没有返回值,执行后永远返回undefined,你直接将它的执行结果赋值给x,或是作为new Array()的入参,都不可能拿到遍历生成的转换结果,和split会不会修改原字符串没有关系。 - 第二个遗漏点:你用
split拆分出来的每个元素都是字符串类型(比如'1'而非数字1),没有做类型转换的话,最终得到的也不是你要的数字型二维数组。
正确实现
最简洁的写法是用专门用来做数组元素转换的Array.map()方法:
const lines = ['101','010','110']; const x = lines.map(str => str.split('').map(char => Number(char)))
执行逻辑说明:
- 外层
map遍历lines的每一个字符串元素 - 对每个字符串执行
split('')拆分为单字符数组 - 内层
map遍历单字符数组,用Number()把每个字符转成数字 - 所有转换后的子数组合并后就是目标二维数组。
如果非要用forEach实现也可以,手动初始化空数组往里塞结果就行:
const x = [] lines.forEach(str => { const numSubArr = str.split('').map(char => Number(char)) x.push(numSubArr) })
内容的提问来源于stack exchange,提问作者Dr0nhp
相关产品推荐
相关产品推荐

