2 陣列中找出至少有一個相同之元素 | JavaScript

使用 Array.prototype.some()Array.prototype.filter(),找出 2 個 array 至少有一個相同的元素。

  • some() 接收到的參數是一組公式,如果 array 的某一個元素有符合此公式,立即回傳 true,如遍歷整個 array 都找不到則回傳 false

  • filter() 接收到的參數也是一組公式,不過跟 some() 不一樣的地方是 filter() 經過公式的運算後,會回傳一個新的陣列。

範例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
var result1 = [
  { id: 1, name: "Sandra", type: "user", username: "sandra" },
  { id: 2, name: "John", type: "admin", username: "johnny2" },
  { id: 3, name: "Peter", type: "user", username: "pete" },
  { id: 4, name: "Bobby", type: "user", username: "be_bob" },
];

var result2 = [
  { id: 2, name: "John", email: "johnny@example.com" },
  { id: 4, name: "Bobby", email: "bobby@example.com" },
];

// 找出 result1 和 result2 相同的 id 之後
// 回傳一個新 array
result1.filter((o1) => result2.some((o2) => o1.id === o2.id));

// 找出 result1 和 result2 不同的 id 之後
// 回傳一個新 array
result1.filter((o1) => !result2.some((o2) => o1.id === o2.id));

結果圖: Imgur

Imgur


參考資料:

mdn web docs - Array.prototype.some()

mdn web docs - Array.prototype.filter()

comments powered by Disqus