天天看点

数组根据内部对象特定字段进行分割成多个数组

引文:后台把所有数据对象信息放到一个数组中传回,已知数组内部对象有一个字段相同,根据这个相同字段进行数组拆分。

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图形。

后续有时间我回贴上优化后的代码。

继续阅读