Vitaminaq / interview-collection

前端面试合集
3 stars 0 forks source link

数据转换 已知数组A和数组B,合并为数组C。 #3

Open Vitaminaq opened 2 years ago

Vitaminaq commented 2 years ago
const A = [{ id: 1, name: 'zhangsan', age: 20 }, { id: 2, name: 'lisi', age: 22 }];
const B = [{ key: 'id', val: 1, hobby: ['basketball', 'football'] },
           { key: 'id', val: 2, hobby: ['billiards', 'badminton'] }];
// 通过id字段匹配得到数组C
const C = [
    { id: 1, name: 'zhangsan', age: 20, hobby: ['basketball', 'football'] },
    { id: 2, name: 'lisi', age: 22, hobby: ['billiards', 'badminton'] }
];
Vitaminaq commented 2 years ago
function transform(A, B) {
    const map = new Map();
    B.forEach((i) => {
        if (i.key === 'id') {
            const it = {...i};
            delete it.key;
            delete it.val;
            map.set(i.val, it);
        }
    });
    return A.map(n => {
        if (map.has(n.id)) return Object.assign(n, map.get(n.id));
        return n;
    });
}