js合并数组里面的对象数据,弱合并。

说明:该方法时通过冒泡方法使用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
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值