我有2个对象数组,它们每个都有一个共同的id。如果它们具有匹配的id,则需要将数组2的对象的属性添加到对象数组1。

阵列1:

[
    {
        id: 1,
        name: tom,
        age: 24
    },
    {
        id: 2,
        name: tim,
        age: 25
    },
    {
        id: 3,
        name: jack,
        age: 24
    },

]


阵列2:

[
    {
        id: 1,
        gender: male,
        eyeColour: blue,
        weight: 150
    },
    {
        id: 2,
        gender: male,
        eyeColour: green,
        weight: 175
    },
    {
        id: 3,
        gender: male,
        eyeColour: hazel,
        weight: 200
    },

]


期望的结果:

[
    {
        id: 1,
        name: tom,
        age: 24,
        eyeColour: blue,
    },
    {
        id: 2,
        name: tim,
        age: 25,
        eyeColour: green,
    },
    {
        id: 3,
        name: jack,
        age: 24,
        eyeColour: hazel,
    },

]


我尝试使用lodash _.merge函数,但是当我只想添加eyeColour时,我最终将所有属性合并到一个数组中。

最佳答案

刚注意到Paul在我回答问题时回答了,但是无论如何我都会添加非常相似的代码:

var getEyeColour = function (el) { return _.pick(el, 'eyeColour'); }
var out = _.merge(arr1, _.map(arr2, getEyeColour));


DEMO

09-10 13:13
查看更多