首页 >后端开发 >php教程 >如何在 JavaScript 中检查一个数组是否包含另一个数组?

如何在 JavaScript 中检查一个数组是否包含另一个数组?

Patricia Arquette
Patricia Arquette原创
2024-11-19 20:03:03209浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn