javascript - 遍历二维数组并将数据提取到新数组

标签 javascript arrays loops multidimensional-array

我有一个像这样的二维数组:

const bArray = 
[ [ 'Hello World',
    'Hi everybody',
    'How are you?'
  ],
  [ { text: 'Hola Mundo',
      from: [Object],
      raw: '' },
    { text: 'Hola a todos',
      from: [Object],
      raw: '' },
    { text: 'Cómo estás?',
      from: [Object],
      raw: '' },
  ]
]

结果我只需要得到一个如下所示的数组:

[
 { en: 'Hello World',
   es: 'Hola Mundo' },

 { en: 'Hi everybody',
   es: 'Hola a todos' },

 { en: 'How are you?',
   es: 'Cómo estás?' },
]

我是这样做的:

let val1 = bArray[0].map(tuple => tuple);
let val2 = bArray[1].map(tuple => tuple);

let result = val1.reduce((arr, v, i) => arr.concat({"en" : v, "es" : val2[i].text}), []);

现在在 result 变量中,我只有一个数组,其中包含之前显示的结果。


我的问题?

是否有任何改进的方法可以用更少的代码行获得相同的结果?我的意思是,像 mapreducefilterconcat 的组合,而不创建两个单独的数组,如 val1val2

最佳答案

如果你只是这样做:

bArray[0].reduce((arr, v, i) => arr.concat({"en" : v, "es" : bArray[1][i].text}), []);

你可以在一行中得到同样的东西。

解释:

let val1 = bArray[0].map(tuple => tuple);
let val2 = bArray[1].map(tuple => tuple);

这只是获取数组中的元素。它与以下内容完全相同:

let val1 = bArray[0];
let val2 = bArray[1];

所以我只是直接访问了原始行中的 bArray 索引。

关于javascript - 遍历二维数组并将数据提取到新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50498233/

相关文章:

java - 如何在java中复制数组而不是引用?

php - 用数组更新 MySql 数据库

R:矩阵中的子集只有那些在特定列中具有特定值的行

javascript - 使用 Kinetic 在 Canvas 上添加更多图像

java - 具有 GridView 的 fragment 可显示 url 路径中的图像

javascript - SweetAlert - 更改模态宽度?

java - 将自定义对象数组传递给 android 中的另一个 Activity

javascript - 将参数传递给函数 Reactjs

Java 循环中的 boolean 条件

javascript - 关于复选框检查的困惑