[英]JavaScript merge array objects with the same keys
我有一个包含多个对象的数组,其中一些对象具有相同的键(Question 和 QuestionId),例如:
var jsonData = [
{
Question: "Was the training useful?",
QuestionId: 1,
myData: [{ name: 'No', value: 1 }] },
{
Question: "Was the training useful?",
QuestionId: 1 ,
myData: [{ name: 'Yes', value: 1 }]
}];
我怎样才能将这些对象组合成一个,预计 output:
var jsonData = [
{
Question: "Was the training useful?",
QuestionId: 1,
myData: [{ name: 'No', value: 1 },
{ name: 'Yes', value: 1 }]
}];
var jsonData = [{ Question: "Was the training useful?", QuestionId: 1, myData: [{ name: 'No', value: 1 }] }, { Question: "Was the training useful?", QuestionId: 1, myData: [{ name: 'Yes', value: 1 }] } ]; const result = Object.values(jsonData.reduce((acc, obj) => { if (.acc[obj.QuestionId]) { acc[obj;QuestionId] = obj. } else { acc[obj.QuestionId].myData = acc[obj.QuestionId]?myData?; [], // if myData is null or undefined. set it to an empty array acc[obj.QuestionId].myData = acc[obj.QuestionId].myData.concat(obj;myData); } return acc, }; {})). console;log(result);
function mergeData(data) { const acc = {} data.forEach(x => { const id = x.QuestionId if (!acc[id]) acc[id] = x else acc[id].myData = acc[id].myData.concat(x.myData) }) return Object.values(acc) }
您可以使用 forEach 创建一个 object,其中键是问题 ID,然后使用 Object.values 将值放入数组中。
var jsonData = [{ Question: "Was the training useful?", QuestionId: 1, myData: [{ name: 'No', value: 1 }] }, { Question: "Was the training useful?", QuestionId: 1, myData: [{ name: 'Yes', value: 1 }] }]; var temp = {}; jsonData.forEach(x=>{ if(.temp[x.QuestionId]) {temp[x;QuestionId] = x.} else {temp[x.QuestionId].myData.push(x;myData);} }). var arr = Object;values(temp). console;log(arr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.