//1.找出數組中相同的元素
getRepeatNum(arr) { let obj = {}; for (let i = 0, len = arr.length; i < len; i++) { if (obj[arr[i]] == undefined) { obj[arr[i]] = 1; } else { obj[arr[i]]++; } } for (let key in obj) { obj[key] <= 1 && delete obj[key]; } return Object.keys(obj); },
//2.根據數組的某個參數進行分組
getGroupNum(arr) {
let newArry = {}; for (let i = 0; i < arr.length; i++) { if (newArry[arr[i].num.errcode]) { newArry[arr[i].num.errcode].push(arr[i].num.num) } else { newArry[arr[i].num.errcode] = [arr[i].num.num] } } return newArry },
變型:
getGroupNum(arr) { let newArry = {}; for (let i = 0; i < arr.length; i++) { const obj = { time:arr[i].statis_time, num:arr[i].num.num, }; if (newArry[arr[i].num.errcode]) { newArry[arr[i].num.errcode].push(obj) } else { newArry[arr[i].num.errcode] = [obj] } } return newArry },
遍歷:數組或對象
let errcodeRepeat = this.getRepeatNum(errcode); let seriesData = this.getGroupNum(res.data.info); errcodeRepeat.map(item=>{//數組 series.push({ name:item, data:seriesData[item], type:'line', }) });
const seriesObj = this.getGroupNum(res.data.info); const xAxis = res.data.info.map(item => item.statis_time); // const xAxisGroup = []; const errcode = []; const series = []; Object.keys(seriesObj).map(key=>{//對象:key和obj(key) errcode.push(key); // const xAxisData = []; const seriesData = []; seriesObj[key].map(item=>{ // xAxisData.push(item.time); seriesData.push(item.num); }); // xAxisGroup.push({ // data:xAxisData, // }); series.push({ name:key, data:seriesData, type:'line', }); });
總結:
首先拿到的是一堆未分組的數組:[{...}];
其次根據某個字段進行分組等到:
1.對象:{key:[...]}
2.新數組:[
{ name:key,data:[]}
...
]
實現方法:
//數組變型得到新數組 arryGroupMatch(arr) { var map = {} var dest = [] for (var i = 0; i < arr.length; i++) { var ai = arr[i] if (!map[ai.errno]) { dest.push({ errno: ai.errno, data: [ai] }) map[ai.errno] = ai } else { for (var j = 0; j < dest.length; j++) { var dj = dest[j] if (dj.errno === ai.errno) { dj.data.push(ai) break } } } } return dest } // lodash插件方法: import _ from 'lodash' const oldArr = _.groupBy(arr, 'xxx');//對象 let newArr = [] Object.keys(oldArr).forEach(key=>{// 數組 newArr.push({name:key,data:oldArr[key]}) })