如何合并数组中ID相同的数据,并按type类型分别生成jine属性?

如何合并数组中id相同的数据,并按type类型分别生成jine属性?

如何将数组中 id 相同的数据合并为对象?

给定一个数组 list,其中每个元素都包含 id、jine 和 type 属性。要求将数组中 id 相同的数据合并为一个对象,新的对象应具有 id 及不同 type 对应的 jine 属性。

原数据:

const list = [    {        id: "202301",        jine: 23,        type: "晚餐"    },    {        id: "202301",        jine: 87.5,        type: "早餐"    },    {        id: "202301",        jine: 1065.5,        type: "中餐"    },    {        id: "202302",        jine: 10,        type: "晚餐"    },    {        id: "202302",        jine: 181.5,        type: "早餐"    },    {        id: "202302",        jine: 633.5,        type: "中餐"    }];

期望数据格式:

const list = [    {        id: "202301",        jine1: 87.5, // 早        jine2: 1065.5, // 中        jine3: 23 // 晚    },    {        id: "202302",        jine1: 181.5, // 早        jine2: 633.5, // 中        jine3: 10 // 晚    }];

解决方案:

Object.entries(Object.groupBy(list, item => item.id))  .map(([k, v]) => ({     id: k,     jine1: v.find(e => e.type === '早餐')?.jine,     jine2: v.find(e => e.type === '中餐')?.jine,     jine3: v.find(e => e.type === '晚餐')?.jine   }))

解释:

使用 object.groupby() 函数将数组按 id 分组。该函数返回一个对象,其键为 id 值,值为具有该 id 的数组。使用 object.entries() 函数将分组后的对象转换为一个数组,其中每个元素是一个键值对。使用 map() 函数遍历键值对数组,并为每个键值对创建一个新对象。新对象包含一个 id 属性,以及三个 jine 属性(jine1、jine2 和 jine3),分别对应 早餐、中餐 和 晚餐 类型。使用 find() 函数在每个 type 数组中查找与给定 type 匹配的元素,并获取其 jine 值。

以上就是如何合并数组中ID相同的数据,并按type类型分别生成jine属性?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1498731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 20:42:50
下一篇 2025年12月19日 20:43:11

相关推荐

发表回复

登录后才能评论
关注微信