概要
我们使用new Set方法对数据进行去重,并通过array.from将其重新转化为数组。
排序我们借助于Array.sort方法实现
使用示例
let data = res.data;
//数据处理:按f_jdmc分组汇总数据 解决接口中f_jdmc重复问题
let data2=[];
let jdmcs =data.map(item=>{return item.f_jdmc});
unique(jdmcs).forEach(function(item,i){
let fxsms=data.map(obj => {if(obj.f_jdmc==item){return Number(obj['f_fxsm'])}else{return 0;}});
let json={
f_jdmc:item,
f_fxsm:fxsms.reduce((n,m)=>n+m)
}
data2.push(json);
})
//data2按照f_fxsm大小排序
data2.sort(compare("f_fxsm","asc"));
关键代码
//数组去重
function unique(arr){
return Array.from(new Set(arr));
}
//对象数组排序(日期、数值类)
var compare = function (property,type) {
type=type?type:"asc"
var reg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/;
var regExp = new RegExp(reg);
var isDateType=false;
return function (a, b) {
var value1 = a[property];
var value2 = b[property];
isDateType=isDateType?isDateType:regExp.test(value1);
if(type=="asc"){
if(isDateType){
return Date.parse(value1) - Date.parse(value2);
}else{
return value1 - value2;
}
}else{
if(isDateType){
return Date.parse(value2) - Date.parse(value1)
}else{
return value2 - value1;
}
}
}
}
//对象数组排序(文本类)
function compare(propertyName,order) {
return function (object1, object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if(order==0){
if (value2 < value1) {
return -1;
}
else if (value2 > value1) {
return 1;
}
else {
return 0;
}
}if(order==1){
if (value2 > value1) {
return -1;
}
else if (value2 < value1) {
return 1;
}
else {
return 0;
}
}
}
}