首頁 > 後端開發 > php教程 > 如何在 JavaScript 中檢查一個陣列是否包含另一個陣列?

如何在 JavaScript 中檢查一個陣列是否包含另一個陣列?

Patricia Arquette
發布: 2024-11-19 20:03:03
原創
242 人瀏覽過

How to Check if an Array Contains Another Array in JavaScript?

你能在 JavaScript 中檢查一個陣列是否包含另一個陣列嗎?

類似於 PHP 的 in_array() 函數,該函數將一個數組中的值與一個數組中的值進行比較另外,JavaScript 沒有此功能的內置等效項。

解決方法

為了解決這個問題,流行的 JavaScript 函式庫和實用程式套件提供了自己的實作。 jQuery 的 $.inArray() 和 Prototype 的 Array.indexOf() 是著名的範例。 jQuery 的實作很簡單:

function inArray(needle, haystack) {
  for (var i = 0; i < haystack.length; i++) {
    if (haystack[i] == needle) return true;
  }
  return false;
}
登入後複製

陣列比較

但是,需要注意的是PHP 的in_array() 也決定一個陣列是否在另一個陣列中。 Chris 和 Alex 的程式碼沒有複製此行為。相反,Chris 的程式碼類似於 PHP 的 array_intersect,而 Alex 的程式碼是 Prototype 官方版本的 indexOf。

要實作PHP 的in_array() 巢狀數組,可以使用以下自訂函數:

function arrayCompare(a1, a2) {
  if (a1.length != a2.length) return false;
  for (var i = 0; i < a1.length; i++) {
    if (a1[i] !== a2[i]) return false;
  }
  return true;
}
登入後複製

增強的inArray() 函數:

function inArray(needle, haystack) {
  for (var i = 0; i < haystack.length; i++) {
    if (typeof haystack[i] == 'object') {
      if (arrayCompare(haystack[i], needle)) return true;
    } else {
      if (haystack[i] == needle) return true;
    }
  }
  return false;
}
登入後複製

用法範例

var a = [['p', 'h'], ['p', 'r'], 'o'];

if (inArray(['p', 'h'], a)) {
  alert('ph was found');
}
if (inArray(['f', 'i'], a)) {
  alert('fi was found');
}
if (inArray('o', a)) {
  alert('o was found');
}
登入後複製

輸出:

ph was found
o was found
登入後複製

請注意,不建議擴充陣列原型,因為它可能會產生意想不到的後果。

以上是如何在 JavaScript 中檢查一個陣列是否包含另一個陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板