1. 程式人生 > 實用技巧 >陣列物件中根據某一屬性值篩選,如果該屬性值相同,將對相中其他屬性合併為一個數組

陣列物件中根據某一屬性值篩選,如果該屬性值相同,將對相中其他屬性合併為一個數組

獲取後臺的資料 取出需要的資料以引數形式(arrobj2)傳給後臺 
    let arrobj=[{name:"aaa",age:"10"},{name:"bbb",age:"11"},{name:"ccc",age:"12"},{name:"ddd",age:"10"},{name:"eee",age:"11"}]
    let arrobj2=[{name:["aaa","ddd"],age:"10"},{name:["bbb","eee"],age:"11"},{name:["ccc"],age:"12"}]
例如:將arrobj 轉換合併為arrobj2

    sortArr(arr, str) {
        let _arr = [],
            _t = [],
            // 臨時的變數
            _tmp;
    
        // 按照特定的引數將陣列排序將具有相同值得排在一起
        arr = arr.sort(function(a, b) {
            let s = a[str],
                t = b[str];
    
            return s < t ? -1 : 1;
        });
    
        if ( arr.length ){
            _tmp = arr[0][str];
        }
        // console.log( arr );
        // 將相同類別的物件新增到統一個數組
        for (let i in arr) {
            // console.log( _tmp);
            if ( arr[i][str] === _tmp ){
                // console.log(_tmp)
                _t.push( arr[i] );
            } else {
                _tmp = arr[i][str];
                _arr.push( _t );
                _t = [arr[i]];
            }
        }
        // 將最後的內容推出新陣列
        _arr.push( _t );
        return _arr;
    },

 secondchange(val){
        let arr2=[]
        let arr1=[]
        let obj2={userId:[],platformId:"",i18nValue:"2"}
        // 將後臺獲取的資料的遍歷取出需要的資料
        for(let i=0;i<val.length;i++){
            let obj={}
            obj.userId=val[i].userId
            obj.platformId=val[i].platformId
            arr1.push(obj)
        }
        //此時 arr1=[{name:"aaa",age:"10"},{name:"bbb",age:"11"},{name:"ccc",age:"12"},{name:"ddd",age:"10"},{name:"eee",age:"11"}]
        //this.sortArr(要篩選的陣列,要判斷的屬性名)
       let arrz=this.sortArr(arr1,"platformId")
    //
        arrz.forEach(item=>{
            obj2={userId:[],platformId:"",i18nValue:"2"}
            for(let i=0;i<item.length;i++){
                obj2.userId.push(item[i].userId)
                obj2.platformId=item[i].platformId

             }
             arr2.push(obj2)
        })
        // console.log(arr2,"020202020")
        this.secheckedids=arr2
      },