首頁 >web前端 >js教程 >如何在多個 JavaScript 陣列中尋找匹配元素?

如何在多個 JavaScript 陣列中尋找匹配元素?

Patricia Arquette
Patricia Arquette原創
2024-10-24 18:45:09892瀏覽

How to Find Matching Elements Across Multiple JavaScript Arrays?

在多個JavaScript 數組中匹配元素

問題

給定多個JavaScript 字串值數組,找到在all 中相同出現的元素 陣列。例如:

<code class="javascript">var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];</code>

預期輸出:

<code class="javascript">['apple', 'fish', 'pizza']</code>

要找出符合的元素,我們可以使用陣列方法的組合:

<code class="javascript">const arrays = [arr1, arr2, arr3];
const result = arrays.shift().filter((v) => {
  return arrays.every((a) => {
    return a.indexOf(v) !== -1;
  });
});</code>

步驟:

  1. 使用arrays.shift() 從原始清單中刪除第一個陣列。
  2. 使用 .filter()第一個循環遍歷每個元素 v 的陣列。
  3. 對其餘陣列使用 .every() 來檢查每個陣列是否包含目前元素 v。
  4. 如果元素 v 存在在每個陣列中,將其包含在結果陣列中。

透過迭代地將這個邏輯應用於每個數組,我們可以有效地找到在 所有 提供的數組中相同出現的元素。

其他注意事項

重複元素處理:

提供的解假設陣列不包含重複元素。如果是這樣,您可以如下修改程式碼:

<code class="javascript">const result = arrays.shift().reduce((res, v) => {
  if (res.indexOf(v) === -1 &amp;&amp; arrays.every((a) => {
    return a.indexOf(v) !== -1;
  })) res.push(v);
  return res;
}, []);</code>

此程式碼使用 .reduce() 而不是 .filter()。它檢查結果數組中的重複項,並僅添加每個數組中存在的唯一元素。

任意數量的陣列:

此解法旨在與未知數量的陣列。透過使用 arrays.shift(),我們可以順序比較第一個陣列和其餘數組,直到處理完所有數組。

以上是如何在多個 JavaScript 陣列中尋找匹配元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn