这个问题在这里已经有答案了:
如何在JavaScript中检查数组是否包含值?
(54个答案)
(54个答案)
四年前关闭的
确定对象是否在数组中的最佳方法是什么
这是我知道的最好的方法:
函数包括(arr,obj){
对于(变量i=0;i<;arr.length;i++){
如果(arr[i]==obj)返回true;
}
}
日志(包括([1,2,3,4],3));//符合事实的
console.log(包括([1,2,3,4],6));//未定义的
从ECMAScript 2016开始,您可以使用includes()
arr.includes(obj);
如果您想支持IE或其他旧浏览器:
功能包括(arr、obj){
返回(arr.indexOf(obj)!=-1);
}
编辑:
但这在IE6、7或8上不起作用。最好的解决方法是在不存在时自己定义它:
-
Mozilla(ECMA-262)版本:
if(!Array.prototype.indexOf) { Array.prototype.indexOf=函数(searchElement/*,fromIndex*/) { &“严格使用”;; if(this==void 0 | | this==null) 抛出新的TypeError(); var t=对象(本); var len=t.length>;>;0; 如果(len==0) 返回-1; var n=0; 如果(arguments.length>;0) { n=数量(参数[1]); 如果(n!==n) n=0; 否则如果(n!==0&;n!==(1/0)&;n!==-(1/0)) n=(n>;0 | |-1)*数学地板(数学abs(n)); } 如果(n>;=len) 返回-1; 变量k=n>;=0 N :Math.max(len-Math.abs(n),0); 对于(;k<;len;k++) { if(t&;t[k]==搜索元素中的k) 返回k; } 返回-1; }; }
-
丹尼尔·詹姆斯的版本:
if(!Array.prototype.indexOf){ Array.prototype.indexOf=函数(obj,fromIndex){ if(fromIndex==null){ fromIndex=0; }else if(从索引<;0){ fromIndex=Math.max(0,this.length+fromIndex); } for(var i=fromIndex,j=this.length;i<;j;i++){ 如果(此[i]==obj) 返回i; } 返回-1; }; }
-
公鸡酸的版本:
Array.prototype.hasObject=( !Array.indexOf?函数(o) { var l=此长度+1; 而(l-=1) { 如果(这个[l-1]==o) { 返回true; } } 返回false; }:功能(o) { return(this.indexOf(o)!=-1); } );