当输入是属性值Javascript的数组时,从Array对象中删除具有相同属性值的对象

时间:2020-10-06 16:36:29

标签: javascript arrays object arrayobject

我有数组对象:

[
    {
        id: 1,
        name: ABC,
        age: 10
    },
    {
        id: 2,
        name: ABCXYZ,
        age: 20
    },
    {
        id: 3,
        name: ZYXCNA,
        age: 30
    },
    ...
    ...
    ....more
]

,数组是上面数组对象中id的值: [ 1, 2]

然后,我希望上述数组对象中的数组对象的值不为id。 例如:我将在这里收到的数组对象是

[
    {
        id: 3,
        name: ZYXCNA,
        age: 30
    },
    {
        id: 4,
        name: ABCDX,
        age: 30
    }
] 

我在这里使用3 for循环来解决此问题,但我认为可以采用更明智的方法。 就像在这里使用reduce一样,但我仍然没有解决。谁能帮我?非常感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用Array.filterArray.includes进行此操作。

const source = [
    {
        id: 1,
        name: 'ABC',
        age: 10
    },
    {
        id: 2,
        name: 'ABCXYZ',
        age: 20
    },
    {
        id: 3,
        name: 'ZYXCNA',
        age: 30
    },
    {
        id: 4,
        name: 'ABCDX',
        age: 30
    }
];

const input = [ 1, 2 ];

const output = source.filter(({ id }) => !input.includes(id));
console.log(output);

答案 1 :(得分:3)

您根本不需要任何显式循环,您只需要过滤

var input = [
    {
        id: 1,
        name: "ABC",
        age: 10
    },
    {
        id: 2,
        name: "ABCXYZ",
        age: 20
    },
    {
        id: 3,
        name: "ZYXCNA",
        age: 30
    },
];

var ids = [1,2];

var result = input.filter(x => ! ids.includes(x.id));
console.log(result);