JavaScriptを使用して2つの異なるオブジェクトの配列をマージするにはどうすればよいですか?
一部の人が回答した質問に関する情報を含む2つの異なるオブジェクトの配列があるとします-
const arr1=[ { PersonalID: '11', qusetionNumber: '1', value: 'Something' }, { PersonalID: '12', qusetionNumber: '2', value: 'whatever' }, { PersonalID: '13', qusetionNumber: '3', value: 'anything' }, { PersonalID: '14', qusetionNumber: '4', value: 'null' } ]; const arr2=[ { qusetionNumber: '2', chID: '111', cValue: 'red' }, { qusetionNumber: '2', chID: '112', cValue: 'green'}, { qusetionNumber: '2', chID: '113', cValue: 'blue' }, {qusetionNumber: '3', choiceID: '114', cValue: 'yellow'}, {qusetionNumber: '4', choiceID: '115', cValue: 'red'} ];
このデータをグループ化する関数を作成する必要があります。この関数は、固有の人物に応じて両方の配列に存在します。つまり、各固有の人物の質問と選択肢を表す1つのオブジェクトです。
したがって、最終的な出力は次のようになります-
const output = [{ personalID:11, qusetionNumber:1, value: 'Something' }, { personalID:12, qusetionNumber:2, value: 'whatever', choice:[ { qusetionNumber: '2', chID: '111', cValue: 'red' }, { qusetionNumber: '2', chID: '112', cValue: 'green'}, { qusetionNumber: '2', chID: '113', cValue: 'blue' } ] }, { personalID:13, qusetionNumber:3, value: 'anything', choice:[ { qusetionNumber: '3', chID: '114', cValue: 'yellow' } ] }, { personalID:14, qusetionNumber:4, value: 'null', choice:[ { qusetionNumber: '4', chID: '115', cValue: 'red' } ] }];
例
このためのコードは-
になりますconst arr1=[ { PersonalID: '11', qusetionNumber: '1', value: 'Something' }, { PersonalID: '12', qusetionNumber: '2', value: 'whatever' }, { PersonalID: '13', qusetionNumber: '3', value: 'anything' }, { PersonalID: '14', qusetionNumber: '4', value: 'null' } ]; const arr2=[ { qusetionNumber: '2', chID: '111', cValue: 'red' }, { qusetionNumber: '2', chID: '112', cValue: 'green'}, { qusetionNumber: '2', chID: '113', cValue: 'blue' }, {qusetionNumber: '3', choiceID: '114', cValue: 'yellow'}, {qusetionNumber: '4', choiceID: '115', cValue: 'red'} ]; const mergeArray = (arr1 = [], arr2 = []) => { let i = -1; const copy = arr1.slice(); copy.forEach(obj => { const helper = []; arr2.forEach(obj2 => { if(obj.qusetionNumber == obj2.qusetionNumber){ i++; helper.push(arr2[i]); }; }) if(helper.length !== 0){ obj.choice = helper; }; }) return copy; }; console.log(JSON.stringify(mergeArray(arr1, arr2), undefined, 4));>
出力
そして、コンソールの出力は-
になります[ { "PersonalID": "11", "qusetionNumber": "1", "value": "Something" }, { "PersonalID": "12", "qusetionNumber": "2", "value": "whatever", "choice": [ { "qusetionNumber": "2", "chID": "111", "cValue": "red" }, { "qusetionNumber": "2", "chID": "112", "cValue": "green" }, { "qusetionNumber": "2", "chID": "113", "cValue": "blue" } ] }, { "PersonalID": "13", "qusetionNumber": "3", "value": "anything", "choice": [ { "qusetionNumber": "3", "choiceID": "114", "cValue": "yellow" } ] }, { "PersonalID": "14", "qusetionNumber": "4", "value": "null", "choice": [ { "qusetionNumber": "4", "choiceID": "115", "cValue": "red" } ] } ]
-
2つのJavaScriptオブジェクトをマージする方法は?
以下は、2つの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> &nbs
-
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>