js 数组中id为相同id的共同key,值是其余值?

新手上路,请多包涵
let oldObj = [
        {
          id: "ZL-4#1#CSX-FDP1",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        },
        {
          id: "ZL-4#1#CSX-FDP2",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        },{
          id: "ZL-4#1#CSX-FDP3",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        },{
          id: "ZL-4#1#CSX-FDP4",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        }

      ]....

这种数据体变成:

{
    ZL-4#1#CSX-FDP1: [{},{}]
    ZL-4#1#CSX-FDP2: [{},{}]
}

id为key, 同一个key值的其余值为value放在数组的对象中

阅读 1.5k
2 个回答
[
        {
          id: "ZL-4#1#CSX-FDP1",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        },
        {
          id: "ZL-4#1#CSX-FDP2",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        },{
          id: "ZL-4#1#CSX-FDP3",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        },{
          id: "ZL-4#1#CSX-FDP4",
          moduleBarcode: "9999",
          virtualModuleBarcode: ".324",
        }

      ].reduce((res,v) => ((res[v.id] ||= []).push(v), res), {})

新建一个空对象,然后遍历数组:
如果 key 不存在则在对象上新建 key 和对应的数组;
如果 key 存在则直接往数组添加新值。

const newObj = {};
oldObj.forEach((item) => {
  if (item.id in newObj) {
    newObj[item.id].push(item);
  } else {
    newObj[item.id] = [item];
  }
});
console.log(newObj);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题