Xanax不上头 2022-01-12 14:24 采纳率: 60%
浏览 122
已结题

js根据对象属性合并多个list到一个list中

    let list1 = [{name:"张三",time:"20220101"},{name:"李四",time:"20220102"},{name:"王五",time:"20220103"}]
    let list2 = [{name:"翰林",time:"20220103"},{name:"拔客",time:"20220105"},{name:"水煮",time:"20220106"}]
    let list3 = [{name:"清蒸",time:"20220101"},{name:"赵六",time:"20220102"},{name:"清白",time:"20220103"},{name:"小白",time:"20220104"}]
    let list4 = [{name:"养鱼",time:"20220101"},{name:"随便",time:"20220105"}]

按照时间属性,合并成这样

    let list = [{list1_name:"张三",list3_name:"清蒸",list4_name:"养鱼",time:"20220101"},
      {list1_name:"李四",list3_name:"赵六",time:"20220102"},
      {list1_name:"王五",list2_name:"翰林",list3_name:"清白",time:"20220103"}
      ,{list3_name:"小白",time:"20220104"},{list2_name:"拔客",list4_name:"随便",time:"20220105"},
      {list2_name:"水煮",time:"20220106"}]

如何操作

  • 写回答

1条回答 默认 最新

  • 归来巨星 前端领域新星创作者 2022-01-12 15:59
    关注
    
        <script>
          function listName(name, arr) {
            arr.forEach((item) => {
              item[item.name + item.time] = name;
            });
            return arr;
          }
          let list1 = [
            { name: "张三", time: "20220101" },
            { name: "李四", time: "20220102" },
            { name: "王五", time: "20220103" },
          ];
          let list2 = [
            { name: "翰林", time: "20220103" },
            { name: "拔客", time: "20220105" },
            { name: "水煮", time: "20220106" },
          ];
          let list3 = [
            { name: "清蒸", time: "20220101" },
            { name: "赵六", time: "20220102" },
            { name: "清白", time: "20220103" },
            { name: "小白", time: "20220104" },
          ];
          let list4 = [
            { name: "养鱼", time: "20220101" },
            { name: "随便", time: "20220105" },
          ];
          list1 = listName("list1_name", list1);
          list2 = listName("list2_name", list2);
          list3 = listName("list3_name", list3);
          list4 = listName("list4_name", list4);
          const list = [...list1, ...list2, ...list3, ...list4];
          const newList = [];
          let map = new Map();
          for (let item of list) {
            if (!map.has(item["time"])) {
              map.set(item["time"], item);
            }
          }
          const newKey = [...map.keys()];
          newKey.forEach((item) => {
            const itemArr = {};
            list.forEach((e) => {
              item == e.time ? (itemArr[e[e.name + e.time]] = e.name) : "";
            });
            itemArr.time = item;
            newList.push(itemArr);
          });
          console.log(newList);
        </script>
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月20日
  • 已采纳回答 1月12日
  • 创建了问题 1月12日

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)