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>