关于高阶函数reduce的使用经验记录

1、背景:

var a = [
{
    name:'张三,李四',
personId:'111,222',
    id:'1'
},{
    name:'王五',
personId:'333',
    id:'2'
}
];
var b = [
{
    name:'张三',
    personId:'111',
    id:'1'
},{
    name:'李四',
    personId:'222',
    id:'1'
},{
    name:'王五',
    personId:'333',
    id:'2'
},{
    name:'王六',
    personId:'444',
    id:'3'
}
];

b数组更新了之后,想得到一个新的a数组,将id一样的数据name字段以及personId字段合并,用‘,’拼接;

2、想到了高阶函数reduce

3、代码判断逻辑

var brr = brr.concat(arr);
var obj = {};
var b = [];
b = brr.reduce(function(item,next){
                if(obj[next.id]){
                    for(var k=0;k<item.length;k++){
                        if(item[k].id == next.id){
                            var flag = '0';
                            var crr = item[k].personId.split(',');
                            for(var i=0;i<crr.length;i++){
                                if(crr[i] == next.personId){
                                    flag = '1';
                                }
                            }
                            if(flag == '0'){
                                item[k].name= item[k].name+','+next.name;
                                item[k].personId= item[k].personId+','+next.personId;
                            }
                        }
                    }
                }else{
                    obj[next.id] = true && item.push(next);
                }
                return item;
            },[]);

这样既完成了要求,也实现了数据不会重复拼接。

完了,就这样记录下,高阶函数就是香!!!!!!!!!!!!

猜你喜欢

转载自blog.csdn.net/qq_26311665/article/details/129220007