陣列物件中根據某一屬性值篩選,如果該屬性值相同,將對相中其他屬性合併為一個數組
阿新 • • 發佈:2020-08-07
獲取後臺的資料 取出需要的資料以引數形式(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 },