【问题标题】:Remove Object have same property value from Array object when input is Array of property value Javascript当输入是属性值Javascript的数组时,从数组对象中删除对象具有相同的属性值
【发布时间】:2020-10-06 16:36:29
【问题描述】:

我有数组对象:

[
    {
        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 一样,但我仍然没有解决。谁能帮我?非常感谢。

【问题讨论】:

标签: javascript arrays object arrayobject


【解决方案1】:

您可以使用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);

【讨论】:

    【解决方案2】:

    你根本不需要任何显式循环,你只是在过滤

    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);

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 2022-07-03
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 2018-09-20
      • 2021-07-17
      相关资源
      最近更新 更多