说明:该方法时通过冒泡方法使用Object.keys方法对数据合并的。
/*
合并数组数据
data为数组源数据组
str为需要合并的相叠加的数据
arr数据是不参于比较的数据名称
way是合并方式,为1是去除arr的值比较进行合并,2是包含arr里面的值进行合并
*/
function mergeDatagroup(data,str='',arr=[],way=1){
var datArr=[]
var starObj,starObjname=[],nextObj,nextObjname=[]
for(let x=0;x<data.length;x++){
starObj=data[x]
starObjname=Object.keys(starObj)
for(let y=x+1;y<data.length;y++){
nextObj=data[y]
nextObjname=Object.keys(nextObj)
if (starObjname.length != nextObjname.length) {
return data;
}
let tse=false
for(let z=0;z<starObjname.length;z++){
if(way==1){
if(arr.indexOf(starObjname[z])==-1){
if(starObj[starObjname[z] != nextObj[starObjname[z]]]){
tse=true
}
}
}else if(way==2){
if(arr.indexOf(starObjname[z])!=-1){
if(starObj[starObjname[z]] != nextObj[starObjname[z]]){
tse=true
}
}
}
}
if(!tse){
starObj[str]+=nextObj[str]
data.splice(y,1)
y--
}
}
datArr.push(starObj)
}
return datArr
}