Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
368 views
in Technique[技术] by (71.8m points)

js 如果两个Object中存在相同的eid的话就合并到一个数组里

arr1=[{eid:1,name:'aa'},{eid:1,name:'bb'},{eid:1,name:'cc'},{eid:2,name:'dd'},{eid:2,name:'ee'},{eid:4,name:'ff'}];
arr2=[{eid:1,name:'gg'},{eid:1,name:'hh'},{eid:2,name:'ii'},{eid:2,name:'jj'},{eid:2,name:'kk'},{eid:4,name:'ll'}];

两个数组,arr2与arr1比较,如果arr2里有和arr1里相同eid的,就顺序插入到最后一个的后面,例如下面这样一个数组

arr=[{eid:1,name:'aa'},{eid:1,name:'bb'},{eid:1,name:'gg'},{eid:1,name:'hh'},{eid:1,name:'cc'},{eid:2,name:'dd'},{eid:2,name:'ee'},{eid:2,name:'ii'},{eid:2,name:'jj'},{eid:4,name:'ff'},{eid:4,name:'ll'}];

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
const arr1 = [
    { eid: 1, name: 'aa' },
    { eid: 1, name: 'bb' },
    { eid: 1, name: 'cc' },
    { eid: 2, name: 'dd' },
    { eid: 2, name: 'ee' },
    { eid: 4, name: 'ff' },
];
const arr2 = [
    { eid: 1, name: 'gg' },
    { eid: 1, name: 'hh' },
    { eid: 2, name: 'ii' },
    { eid: 2, name: 'jj' },
    { eid: 2, name: 'kk' },
    { eid: 4, name: 'll' }
];
const arr1LenBound = arr1.length - 1;
let result = [];

arr1.reduce((prev, next, curIdx) => {
    result.push(prev);

    if (prev.eid !== next.eid) {
        result = result.concat(arr2.filter(item => item.eid === prev.eid));
    }

    if (curIdx === arr1LenBound) {
        result.push(next);
        result = result.concat(arr2.filter(item => item.eid === next.eid));
    }

    return next;
});

console.log(result);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...