JavaScriptでキーごとにサイズの異なる2つのオブジェクト配列をマージする方法
このようなオブジェクトがあるとします-
const obj = { "part1": [{"id": 1, "a": 50},{"id": 2, "a": 55},{"id": 4, "a": 100}], "part2":[{"id": 1, "b": 40}, {"id": 3, "b": 45}, {"id": 4, "b": 110}] };
そのようなオブジェクトを1つ取り込むJavaScript関数を作成する必要があります。関数は、オブジェクトのpart1とpart2をマージして、次のようなオブジェクトの配列を形成する必要があります-
const output = [ {"id": 1, "a": 50, "b": 40}, {"id": 2, "a": 55}, {"id": 3, "b": 45}, {"id": 4, "a": 100, "b": 110} ];
例
このためのコードは-
になりますconst obj = { "part1": [{"id": 1, "a": 50},{"id": 2, "a": 55},{"id": 4, "a": 100}], "part2":[{"id": 1, "b": 40}, {"id": 3, "b": 45}, {"id": 4, "b": 110}] }; const mergeObject = (obj = {}) => { let result = []; result = Object.keys(obj).reduce(function (hash) { return function (r, k) { obj[k].forEach(function (o) { if (!hash[o.id]) { hash[o.id] = {}; r.push(hash[o.id]); } Object.keys(o).forEach(function (l) { hash[o.id][l] = o[l]; }); }); return r; }; }(Object.create(null)), []).sort((a, b) => { return a['id'] − b['id']; }); return result; }; console.log(mergeObject(obj));
出力
そして、コンソールの出力は-
になります[ { id: 1, a: 50, b: 40 }, { id: 2, a: 55 }, { id: 3, b: 45 }, { id: 4, a: 100, b: 110 } ]
-
JavaScriptで2つの配列を乗算する方法は?
以下は、JavaScriptで2つの配列を乗算するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> &
-
2つの配列を1つのJavaScriptオブジェクトに変換できますか?
以下は、2つの配列を1つのJavaScriptオブジェクトに変換するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>