js將數組對象中,以某個值相同的對象合並成一個;即把某個值相同的對象內容合並成一個


以下列數據為例,總共有13條數據, 把label相同的數據,里面的children合並成一個             代碼在最后

 1、初始化數據

 

2.結果

 

 

3.代碼

      let testArr = [
        {
          label: "考區/考點",
          prop: "deptNames",
          row: true,
          search: true,
          width: 200,
          editDisabled: true,
          expand: true,
          hide: true,
          defaultExpandAll: false,
          type: "tree",
          dicUrl: "/test/boltdept/getAreaAndPointTree",
          props: {
            label: "deptName",
            value: "deptId",
            children: "children",
          },
        },
        {
          label: "機構",
          prop: "deptName",
          type: "select",
          row: true,
          editDisplay: false,
          search: false,
          dicUrl: "/test/dict/getDictsByCode?dictCode=kw_tag_type",
          props: {
            label: "dictValue",
            value: "dictKey",
          },
        },
        {
          label: "單位等級",
          prop: "deptLeve",
          editDisplay: false,
          search: true,
          hide: true,
          row: true,
          span: 15,
          type: "select",
          dicQuery: {
            materialDictType: 0,
          },
          dicUrl: "/test/materialdictsetting/selectViewLevelList",
          props: {
            label: "dictValue",
            value: "dictKey",
          },
        },
        {
          label: "機構等級",
          row: true,
          search: false,
          editDisabled: true,
          width: 200,
          type: "select",
          prop: "deptLevel",
          dicUrl: "/test/dict/getDictsByCode?dictCode=kw_dept_level",
          props: {
            label: "dictValue",
            value: "dictKey",
          },
        },
        {
          label: "語文",
          prop: "203311500001",
          row: true,
          children: [
            {
              label: "備用卷",
              prop: "203311500001_85975601163943937",
            },
          ],
        },
        {
          label: "數學",
          prop: "203311500002",
          row: true,
          children: [
            {
              label: "備用卷",
              prop: "203311500002_85975601163943937",
            },
          ],
        },
        {
          label: "數學",
          prop: "203311500002",
          row: true,
          children: [
            {
              label: "test_3",
              prop: "203311500002_84857933463703554",
            },
          ],
        },
        {
          label: "英語",
          prop: "203311500004",
          row: true,
          children: [
            {
              label: "備用卷",
              prop: "203311500004_85975601163943937",
            },
          ],
        },
        {
          label: "英語",
          prop: "203311500004",
          row: true,
          children: [
            {
              label: "test_3",
              prop: "203311500004_84857933463703554",
            },
          ],
        },
        {
          label: "印刷材料",
          prop: null,
          row: true,
          children: [
            {
              label: "cs",
              prop: "84563743102074881",
            },
          ],
        },
        {
          label: "印刷材料",
          prop: null,
          row: true,
          children: [
            {
              label: "test_1",
              prop: "84507262931640321",
            },
          ],
        },
        {
          label: "印刷材料",
          prop: null,
          row: true,
          children: [
            {
              label: "測試啊",
              prop: "84172603177795585",
            },
          ],
        },
        {
          label: "印刷材料",
          prop: null,
          row: true,
          children: [
            {
              label: "test",
              prop: "84173239118168066",
            },
          ],
        },
      ];
      console.log(testArr);

      function mergeArr(testArr) {
        var tempArr = [];
        var afterData = [];
        for (let i = 0; i < testArr.length; i++) {
          if (tempArr.indexOf(testArr[i].label) === -1) {
            afterData.push({
              label: testArr[i].label,
              children: [testArr[i]],
              prop: testArr[i].prop,
            });
            tempArr.push(testArr[i].label);
          } else {
            for (let j = 0; j < afterData.length; j++) {
              if (
                (afterData[j].label == testArr[i].label) &
                testArr[i].hasOwnProperty("children")
              ) {
                afterData[j].children.push(testArr[i]);
                break;
              }
            }
          }
        }
        console.log(afterData, "初次結果");

        afterData.forEach((item) => {
          item.childrenOne = [];
          item.children.forEach((y) => {
            //   console.log(y, "----", y.children);
            if (y.children != undefined) {
              item.childrenOne.push(y.children[0]);
            }
          });
        });

        let jj = afterData;
        jj.forEach((item, index) => {
          item.children = [];
          item.children = item.childrenOne;
          delete jj[index].childrenOne;
          if (jj[index].children.length == 0) {
            delete jj[index].children;
          }
        });

        console.log(jj);
        return jj
      }

      console.log(this.mergeArr(testArr), "---最終結果");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM