天天看點

數組根據内部對象特定字段進行分割成多個數組

引文:背景把所有資料對象資訊放到一個數組中傳回,已知數組内部對象有一個字段相同,根據這個相同字段進行數組拆分。

var TabArr = [
            { id: 1, txt: '1' },
            { id: 1, txt: '132' },
            { id: 2, txt: '112' },
            { id: 3, txt: '123' },
            { id: 3, txt: '123' },
            { id: 4, txt: '12ds3' },
            { id: 5, txt: '112ds' },
        ]
        var objarr = [
            { options: [], cid: '' },
            { options: [], cid: '' },
            { options: [], cid: '' },
            { options: [], cid: '' },
            { options: [], cid: '' },
        ]
        // id值相同的字段存入一個數組中。
        for (let i = 0, l = TabArr.length; i < l; i++) {
            for (let j = 0, lth = objarr.length; j < lth; j++) {
                if (objarr[j].cid == '') {
                    objarr[j].cid = TabArr[i].id;
                    objarr[j].options.push(TabArr[i]);
                    break;
                } else if (objarr[j].cid == TabArr[i].id) {
                    objarr[j].options.push(TabArr[i])
                    break;
                }
            }
        }
        console.log(objarr);
      /*   [
            { options: [{ id: 1, txt: '1' },{ id: 1, txt: '132' }], cid: '1' },
            { options: [{ id: 2, txt: '112' }], cid: '2' },
            { options: [{ id: 3, txt: '123' },{ id: 3, txt: '123' }], cid: '3' },
            { options: [{ id: 4, txt: '12ds3' }], cid: '4' },
            { options: [{ id: 5, txt: '112ds' }], cid: '5' },
        ] */
           

這裡得出的數組是在已知id有5個不同值,聲明5個對象數組字段進行存儲,有時候可能我們不清楚具體有多少不同值,是以這裡還可以優化,這裡介紹我的應用場景:根據背景數組資料進行分割得到7個數組對象,然後繪制7個Echarts圖形。

後續有時間我回貼上優化後的代碼。

繼續閱讀