0

我有这个大小为 3 的数组

[
  'decdbaf8-db89-4d4b-973a-e8edab55927c',
  'c553c2f7-eff6-476e-b718-2814a7fa5435',
  '8717092f-5820-474b-9dd9-165e2649180f'
]

这个数组的大小等于 2:

[
  {
    id: 'c553c2f7-eff6-476e-b718-2814a7fa5435',
    name: 'test',
    codReference: '15422aa',
    category_id: '7a026a80-f3d2-462a-ad5d-598e9eabf693',
    created_at: 2020-10-29T22:23:35.928Z,
    updated_at: 2020-10-29T22:23:35.928Z,
    deleted_at: null
  },
  {
    id: 'decdbaf8-db89-4d4b-973a-e8edab55927c',
    name: 'test',
    codReference: '2',
    category_id: '7a026a80-f3d2-462a-ad5d-598e9eabf693',
    created_at: 2020-10-29T22:23:37.784Z,
    updated_at: 2020-10-29T22:23:37.784Z,
    deleted_at: null
  }
]

我知道如果我只得到一个不包含在数组中的项目,我只会使用: indexOf (value)> -1;

但是我怎样才能比较两个数组并只获取第一个数组中不包含在第二个数组中的值

4

2 回答 2

3

可能是这样的(过滤器和一些的组合)

const first = [
  'decdbaf8-db89-4d4b-973a-e8edab55927c',
  'c553c2f7-eff6-476e-b718-2814a7fa5435',
  '8717092f-5820-474b-9dd9-165e2649180f'
];
const second = [{
    id: 'c553c2f7-eff6-476e-b718-2814a7fa5435',
    name: 'test',
    codReference: '15422aa',
    category_id: '7a026a80-f3d2-462a-ad5d-598e9eabf693',
    deleted_at: null
  },
  {
    id: 'decdbaf8-db89-4d4b-973a-e8edab55927c',
    name: 'test',
    codReference: '2',
    category_id: '7a026a80-f3d2-462a-ad5d-598e9eabf693',
    deleted_at: null
  }
]
const result = first.filter(x => !second.some(y => y.id === x));
console.log(result)

于 2020-10-29T23:59:11.640 回答
2

你可以使用过滤器。这是一个有效的解决方案:

var arr1 = [
  'decdbaf8-db89-4d4b-973a-e8edab55927c',
  'c553c2f7-eff6-476e-b718-2814a7fa5435',
  '8717092f-5820-474b-9dd9-165e2649180f'
]


var arr2 = [
  {
    id: 'c553c2f7-eff6-476e-b718-2814a7fa5435',
    name: 'test',
    codReference: '15422aa',
    category_id: '7a026a80-f3d2-462a-ad5d-598e9eabf693',
    created_at: '2020-10-29T22:23:35.928Z',
    updated_at: '2020-10-29T22:23:35.928Z',
    deleted_at: null
  },
  {
    id: 'decdbaf8-db89-4d4b-973a-e8edab55927c',
    name: 'test',
    codReference: '2',
    category_id: '7a026a80-f3d2-462a-ad5d-598e9eabf693',
    created_at: '2020-10-29T22:23:37.784Z',
    updated_at: '2020-10-29T22:23:37.784Z',
    deleted_at: null
  }
]

var arr = arr2.map(_ => _.id);
var res = arr1.filter( function(n) { return !this.has(n) }, new Set(arr) );
console.log(res);

于 2020-10-30T00:00:39.370 回答