我有一个像这样的二维数组:
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
变量中,我只有一个数组,其中包含之前显示的结果。
我的问题?
是否有任何改进的方法可以用更少的代码行获得相同的结果?我的意思是,像 map
与 reduce
、filter
或 concat
的组合,而不创建两个单独的数组,如 val1
和 val2
。
最佳答案
如果你只是这样做:
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/