candy_tadecheng 2022-03-31 11:49 采纳率: 50%
浏览 54
已结题

js 数组合并去重、补齐空缺位


var arr1 = ["03-26", "03-27", "03-28","03-29"]
var arr2 = [
{
              "type": "6",
              "name": "哈哈哈",
              "date": [
                  {
                      "time": "03-27",
                      "num": "5"
                  },
                  {
                      "time": "03-28",
                      "num": "13"
                  },
              ]
          },
          {
              "type": "1",
              "name": "嘻嘻嘻",
              "date": [
                  {
                      "time": "03-27",
                      "num": "1"
                  },
              ]
          },
]
有两个数组arr1和arr2,我想把arr2变成这样
arr2 =  [
{
              "type": "6",
              "name": "哈哈哈",
              "date": [
                 {
                      "time": "03-26",
                      "num": "0"
                  },
                  {
                      "time": "03-27",
                      "num": "5"
                  },
                  {
                      "time": "03-28",
                      "num": "13"
                  },
                  {
                      "time": "03-29",
                      "num": "0"
                  }
              ]
          },
          {
              "type": "1",
              "name": "嘻嘻嘻",
              "date": [
                  {
                      "time": "03-26",
                      "num": "0"
                  },
                  {
                      "time": "03-27",
                      "num": "1"
                  },
              {
                      "time": "03-28",
                      "num": "0"
                  },
                  {
                      "time": "03-29",
                      "num": "0"
                  }
              ]
          },
]
  • 写回答

1条回答 默认 最新

  • 林一怂儿 前端领域新星创作者 2022-03-31 13:13
    关注

    不知道这样符合不符合你的需求~

    var arr1 = ["03-26", "03-27", "03-28", "03-29"]
    var arr2 = [
      {
        "type": "6",
        "name": "哈哈哈",
        "date": [
          {
            "time": "03-27",
            "num": "5"
          },
          {
            "time": "03-28",
            "num": "13"
          },
        ]
      },
      {
        "type": "1",
        "name": "嘻嘻嘻",
        "date": [
          {
            "time": "03-27",
            "num": "1"
          },
        ]
      },
    ]
    // 有两个数组arr1和arr2,我想把arr2变成这样
    let arr3 = [
      {
        "type": "6",
        "name": "哈哈哈",
        "date": [
          {
            "time": "03-26",
            "num": "0"
          },
          {
            "time": "03-27",
            "num": "5"
          },
          {
            "time": "03-28",
            "num": "13"
          },
          {
            "time": "03-29",
            "num": "0"
          }
        ]
      },
      {
        "type": "1",
        "name": "嘻嘻嘻",
        "date": [
          {
            "time": "03-26",
            "num": "0"
          },
          {
            "time": "03-27",
            "num": "1"
          },
          {
            "time": "03-28",
            "num": "0"
          },
          {
            "time": "03-29",
            "num": "0"
          }
        ]
      },
    ]
    
    // 根据上述内容新建合并方法
    /**
     * 合并数组
     * @param {string[]} t1 代表第一种类型的数组
     * @param {{
     *  type:string,
     *  name:string,
     *  date:{
     *   time:string,
     *   num:string
     *  }[]
     * }[]} t2 代表第二种类型的数组
     */
    function mergeArray(t1, t2) {
      for (let i = 0; i < t2.length; i++) {
        for (let j = 0; j < t1.length; j++) {
          // 如果不存在的话,塞入数组中
          if (!t2[i].date.find(a => a.time == t1[j])) t2[i].date.push({ time: t1[j], num: "0" })
        }
        // 做一个简单的排序
        t2[i].date.sort((a, b) => a.time.replace(/-/, '') - b.time.replace(/-/, ''));
      }
      return t2;
    }
    // 测试
    console.log(JSON.stringify(mergeArray(arr1, arr2)) == JSON.stringify(arr3));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源