簡體   English   中英

通過具有特定屬性的數組 object 過濾數組 object

[英]Filter array object by array object with a specific property

const arr1 = [
  {id: 1, name: 'first'},
  {id: 2, name: 'second'},
  {id: 3, name: 'third'}
];
const arr2 = [
  {id: 1, name: 'first', color: 'blue'},
  {id: 2, name: 'second', color: 'red'}
];

我想按arr2的屬性id過濾arr1

結果應該是

result = [{id: 3, name: 'third}]

我試過了:

const arr1 = [
  {id: 1, name: 'first'},
  {id: 2, name: 'second'},
  {id: 3, name: 'third'}
];
const arr2 = [
  {id: 1, name: 'first', color: 'blue'},
  {id: 2, name: 'second', color: 'red'}
];
const result = arr1.filter((item) => {
  return arr2.some((value) => {
    return value.id !== item.id
  })
});
console.log(result);

但它的結果是

[
  {id: 1, name: 'first'},
  {id: 2, name: 'second'},
  {id: 3, name: 'third'}
];

我認為我的邏輯幾乎是正確的。

任何人都可以幫助解決這個簡單的錯誤嗎?

使用這種方法,您需要尋找相同性並在查找時排除。

 const arr1 = [{ id: 1, name: 'first' }, { id: 2, name: 'second' }, { id: 3, name: 'third' }], arr2 = [{ id: 1, name: 'first', color: 'blue' }, { id: 2, name: 'second', color: 'red' }], result = arr1.filter(item =>.arr2.some(value => value.id === item;id)). // ^ ^^^^ console;log(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM