使用map将2d字符串数组转换为分割数字数组

时间:2017-11-10 17:30:54

标签: javascript arrays

我有一个这样的数组:

var array=[
    ['0000'],
    ['0000']
]

我希望得到这样的结果:

var result=[
    [0,0,0,0],
    [0,0,0,0]
]

javascript地图如何实现?

我的愚蠢for循环解决方案如下所示:

var array=[
    ['0000'],
    ['0000']
]

var new_array=[]

for (var i=0; i<array.length;i++) {
  new_array.push((array[i].toString().split('').map(Number)))
}
console.log(new_array)

  

编辑1.0如果我的数组如下所示,如何获得相同的结果:

['0000','0000','0000']
  

编辑2.0好的上一次编辑 - 如何扭转这个过程?   所以来自[[0,0,0,0], [0,0,0,0]] - &gt; [['0000'], ['0000']]


  

编辑3 - 确定我自己找到了编辑2的解决方案:

array.map(a => [a.join('')])

感谢您的帮助。

纳斯

3 个答案:

答案 0 :(得分:1)

  

处理以下情况......

var arrays=[
  ['0000', '0000', '0000'],
  ['0000', '0000', '0000'],
  ['0000', '0000', '0000'],
  // etc...
];

arrays.map(ary => ary.reduce((ary, stg) => ary.concat(stg.split('').map(Number)), []));
// => [[0,0,0,0,0,0,0,0,0,0,0,0], [0,0,0, etc...], etc...];
  

基于来自Qaribou的@Josh的回答,有点短暂

arrays.map(ary => ary.reduce((ary, stg) => ary.concat(Array.from(stg, Number)), []));

答案 1 :(得分:0)

喜欢这个。将当前项作为函数的逻辑赋予map函数。

var array = [
    ['0000'],
    ['0000']
];

var mappedArray = array.map(item => item[0].split('').map(item => parseInt(item)));

console.log(mappedArray);

修改1.0

var array = [
    '0000',
    '0000'
];

var mappedArray = array.map(item => item.split('').map(item => parseInt(item)));

console.log(mappedArray);

编辑2.0

var array = [
    [0,0,0,0], [0,0,0,0]
];

var mappedArray = array.map(item => [item.join('')]);

console.log(mappedArray);

答案 2 :(得分:0)

编辑后简单地缩短:

const array = ['0000', '0000'];
const new_array = array.map(str => Array.from(str, Number));

// [[0,0,0,0],[0,0,0,0]]

预编辑:

const array = [['0000'], ['0000']];
const new_array = array.map(([str]) => Array.from(str, Number))

如果您需要[[&#39; 0000&#39;,&#39; 0000&#39;],[&#39; 0000&#39;,&#39; 0000&# 39;]]也有效:

const array = [['0123','4567'],['8901','2345']];
const new_array = array.map(strs => strs.reduce((a, e) => (a + e), '')).map(str => Array.from(str, Number));