比较两个阵列并将其连接

nem*_*man 0 javascript arrays foreach object filter

我有两个数组as typesdefaultTypes。我需要显示types 默认值array defaultTypes

 const types = [
    {
        Id: 2,
        Name: 'Some value here'
    },
    {
        Id: 3,
        Name: 'Some value here'
    },
    {
        Id: 4,
        Name: 'Some value here'
    }
 ];

 const defaultTypes = [
    {
        Id: 1,
        Name: 'Default value 1'
    },
    {
        Id: 2,
        Name: 'Default value 2'
    }
 ]
Run Code Online (Sandbox Code Playgroud)

如果in types中不存在某些默认类型(在这种情况下,Id:1在types数组中不存在)。我需要在types数组中添加该对象。预期结果将是:

 const expectedTypes = [
    {
        Id: 1,
        Name: '-'
    },
    {
        Id: 2,
        Name: 'Some value here'
    },
    {
        Id: 3,
        Name: 'Some value here'
    },
    {
        Id: 4,
        Name: 'Some value here'
    }
 ]; 
Run Code Online (Sandbox Code Playgroud)

ID为1和2的对象始终必须处于ExpectedTypes中。

Eug*_*oub 5

const expectedTypes = types.concat(
  defaultTypes.filter(
    type => !types.some(t => t.Id == type.Id)
  ));
Run Code Online (Sandbox Code Playgroud)

说明:基本上您想要的是types+ defaultTypes还没有的东西types