在 中有没有办法比较一个数组的值,看看它是否在另一个数组中?
类似于PHP的in_array功能?
不,它没有。出于这个原因,大多数流行的库都带有一个实用程序包。查看jQuery的inArray和Prototype的Array.indexOf作为示例。
jQuery的实现就像你期望的那样简单:
function inArray(needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(haystack[i] == needle) return true;
}
return false;
}
如果你正在处理大量的数组元素,那么上面的方法就可以很好地完成。
以上方法对判断字符串是否在数组中是有效的。但根据PHP文档,这是PHP in_array函数的预期功能:
$a = array(array(\'p\', \'h\'), array(\'p\', \'r\'), \'o\');
if (in_array(array(\'p\', \'h\'), $a)) {
echo \"\'ph\' was found\\n\";
}
if (in_array(array(\'f\', \'i\'), $a)) {
echo \"\'fi\' was found\\n\";
}
if (in_array(\'o\', $a)) {
echo \"\'o\' was found\\n\";
}
// Output:
// \'ph\' was found
// \'o\' was found
在js中如何实现判断一个数组是否存在于里一个数组呢?代码如下:
function arrayCompare(a1, a2) {
if (a1.length != a2.length) return false;
var length = a2.length;
for (var i = 0; i < length; i++) {
if (a1[i] !== a2[i]) return false;
}
return true;
}
function inArray(needle, haystack) {
var length = haystack.length;
for(var i = 0; i < length; i++) {
if(typeof haystack[i] == \' \') {
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\');
}
// Results:
// alerts \'ph\' was found
// alerts \'o\' was found
请注意,我故意没有扩展Array原型,因为这通常是一个坏主意。
继续阅读与本文标签相同的文章
下一篇 :
AI能听懂你的情绪了,人机交互会变得更好吗?
-
微信群聊上线表格接龙功能 v7.0.8版本及以上用户可使用
2026-05-15栏目: 教程
-
Facebook跌出全球品牌10强榜单,隐私和安全问题拖累
2026-05-15栏目: 教程
-
被吐槽:Google:Pixel 4可以在闭着眼睛的情况下解锁!
2026-05-15栏目: 教程
-
网页优化中如何分析并追赶对手
2026-05-15栏目: 教程
-
旅游、留学人数暴跌!禁止华为5G后,澳大利亚紧急率团访问中国
2026-05-15栏目: 教程
