简体   繁体   English

如何使用公共属性合并 javascript 中的对象元素数组

[英]How to merge array of objects element in javascript using common property

     const data = [
  {
    date: "2021-05-17",
    meals: [{ name: "jon", breakFast: 1, lunch: 2, dinner: 2 }],
  },
  {
    date: "2021-05-17",
    meals: [{ name: "Bob", breakFast: 3, lunch: 4, dinner: 5 }],
  },
  {
    date: "2021-05-18",
    meals: [{ name: "Boo", breakFast: 3, lunch: 4, dinner: 5 }],
  },
];

I have an array of objects.我有一组对象。 There has different date and meals(array of objects).有不同的日期和膳食(对象数组)。 Is it possible to show all same date meals together?是否可以一起显示所有同一日期的膳食?

Like this one.像这个。

  const data = [
  {
    date: "2021-05-17",
    meals: [
      { name: "jon", breakFast: 1, lunch: 2, dinner: 2 },
      { name: "Bob", breakFast: 3, lunch: 4, dinner: 5 },
    ],
  },
  {
    date: "2021-05-18",
    meals: [{ name: "Boo", breakFast: 3, lunch: 4, dinner: 5 }],
  },
];

 const data = [{ date: "2021-05-17", meals: [{ name: "jon", breakFast: 1, lunch: 2, dinner: 2 }], }, { date: "2021-05-17", meals: [{ name: "Bob", breakFast: 3, lunch: 4, dinner: 5 }], }, { date: "2021-05-18", meals: [{ name: "Boo", breakFast: 3, lunch: 4, dinner: 5 }], }, ]; let res = {}; data.forEach(x => { if (.res[x.date]) { res[x.date] = {..;x }. } else { res[x.date].meals = [...res[x.date],meals. ...x;meals]; } }). console.log(Object;values(res));

You need to iterate all the data and search if the result array contains the date.您需要迭代所有data并搜索result数组是否包含日期。 If not, create the new item with the date.如果不是,请创建带有日期的新项目。 Then just push the meals data inside.然后把饭菜数据往里推就行了。

 const data = [{date: "2021-05-17",meals: [{ name: "jon", breakFast: 1, lunch: 2, dinner: 2 }],},{date: "2021-05-17",meals: [{ name: "Bob", breakFast: 3, lunch: 4, dinner: 5 }],},{date: "2021-05-18",meals: [{ name: "Boo", breakFast: 3, lunch: 4, dinner: 5 }],},]; const result = []; data.forEach(d => { let i = result.findIndex(e => e.date === d.date) + 1 || result.push({date: d.date, meals: []}); result[i - 1].meals.push(...d.meals); }) console.log(result);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM