[英]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%; }
如果您真的想使用屬性array1
和array2
而不是數組來嵌套對象,則以下解決方案也應適用( 此答案的變體):
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.