簡體   English   中英

如何在JavaScript中按索引合並兩個對象數組?

[英]How can I merge two object arrays by index in JavaScript?

組合下面兩個數組以獲得所需結果的最佳方法是什么。 我希望它們按索引組合。

輸入為:

var array1 = [[1,2,3,4],[4,5,6,7]]
var array2 = [[a,b,c,d],[e,f,g,h]]

所需的輸出為:

var array3 =[{
              array1:[1,2,3,4],
              array2:[a,b,c,d]
             },
             {
              array1:[4,5,6,7],
              array2:[a,b,c,d]
             }]

只要按索引分組,輸出的任何變化都將起作用。 提前致謝。

編輯:不是建議的重復。 建議[a,1,b,2],但未對所需輸出的顯示方式進行分組。

我認為您正在尋找矩陣轉置 ,其中傳遞的2d數組為[array1, array2]

編輯 :當僅使用兩個數組時,此操作也可以稱為“壓縮”。 矩陣轉置可以支持任意數量的行,而不僅僅是兩行。

 var array1 = [ [1, 2, 3, 4], [4, 5, 6, 7] ] var array2 = [ ['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'] ] function transpose(matrix) { return matrix.map(function(_, i) { return matrix.map(function(e) { return e[i] }) }) } var result = transpose([array1, array2]) console.log(result) 
 .as-console-wrapper { min-height: 100%; } 

如果您真的想使用屬性array1array2而不是數組來嵌套對象,則以下解決方案也應適用( 此答案的變體):

 var array1 = [ [1, 2, 3, 4], [4, 5, 6, 7] ] var array2 = [ ['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'] ] var result = array1.map(function (e1, i) { return { array1: e1, array2: array2[i] } }) console.log(result) 
 .as-console-wrapper { min-height: 100%; } 

這與如何在JavaScript中壓縮兩個數組非常相似 ,只是將輸出格式從數組更改為對象:

 var array1 = [[1,2,3,4],[4,5,6,7]]; var array2 = [['a','b','c','d'],['e','f','g','h']]; var array3 = array1.map(function(_, i) { return { array1: array1[i], array2: array2[i] }; }); console.log(array3); 

您可以使用數組映射功能:

 var array1 = [[1,2,3,4],[4,5,6,7]]; var array2 = [['a','b','c','d'],['e','f','g','h']]; var array3 = array1.map(function (e, i) { return [e, array2[i]]; }); console.log(array3); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM