![](/img/trans.png)
[英]Merging two Multidimensional Arrays into a Multidimensional Array with Objects
[英]merging 2 multidimensional arrays at the same index
javascript
我正在嘗試在相同的索引處合並2個多維數組,或者將兩個數組的相同索引隨機化。
var arr1 = [[a, b, c], [d, e], [f, g, h, i]]
var arr2 = [[1, 2, 3], [5, 6], [7, 8, 9, 10]]
preferredResult = [{a: 1, b: 2, c: 3}, {d: 5, e:6}, {f: 7, g: 8, h: 9, i: 10}]
我嘗試了.maps,嵌套循環,.push的各種變體,但無法弄清楚。
或者,如果我能弄清楚如何以相同的方式隨機化兩個數組,那也可以工作,即:可以將arr1 [0]中的字母和arr2 [0]中的數字設置為相同的隨機化,那么arr1 [1]和arr2 [1]等。
function merge(arr1, arr2) {
return arr1.map(function (arr, i) {
return mergeIntoObject(arr1[i], arr2[i]));
};
}
function mergeIntoObject(arr1, arr2) {
var result = {};
arr1.forEach((arr, i) => {
result[arr1[i]] = arr2[i];
});
return result;
}
merge(arr1, arr2);
使用嵌入式for
循環
var arr1 = [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i']] var arr2 = [[1, 2, 3], [5, 6], [7, 8, 9, 10]] var result = [] for (let i = 0; i < arr1.length; i++){ let obj = {}; for (let j = 0; j < arr1[i].length; j++){ obj[arr1[i][j]]=arr2[i][j] } result.push(obj); } console.log(result)
您可以使用array#map
和array#reduce
const arr1 = [['a', 'b', 'c'], ['d','e' ], ['f', 'g', 'h', 'i']], arr2 = [[1, 2, 3], [5, 6], [7, 8, 9, 10]], result = arr1.map(function(a, i){ return a.reduce(function(r, v, j){ r[v] = arr2[i][j]; return r; }, {}); }); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Lodash可能會很有幫助。
var arr1 = [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i']] var arr2 = [[1, 2, 3], [5, 6], [7, 8, 9, 10]] var out = _.zipWith(arr1, arr2, (x,y)=>_.fromPairs(_.zip(x,y))); console.log(out)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
zip將2個數組組合成對,而zipWith將做同樣的事情,但是讓您選擇如何組合它們。
使用map
和forEach
方法
var arr1 = [ ['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h', 'i'] ], arr2 = [ [1, 2, 3], [5, 6], [7, 8, 9, 10] ], m = arr1.map(function(item, index) { let tempObj = {}; item.forEach(function(item2, index2) { tempObj[item2] = arr2[index][index2]; }); return tempObj; }); console.log(m)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.