js判断数组是否包含某个元素

摘要:js判断JS 判断某变量是否为某数组中的一个值的4种方法(总结),分享给大家。indexOf()、正则表达式、arr.find() 、for循环结合if判断

js判断JS 判断某变量是否为某数组中的一个值的4种方法(总结),分享给大家。


方法一:indexOf()

function IsInArray(arr,val){ 
	return arr.indexOf(val)!==-1;
	
} 
var arr=[1,2,3];
IsInArray(arr,3);//true

注:IE8以下的Array并没有indexOf这个方法,解决办法,把一下代码放在你的indexOf方法的上面:

if(!Array.prototype.indexOf){
	Array.prototype.indexOf = function(elt){
		var len = this.length >>> 0;
		var from = Number(arguments[1]) || 0;
		from = (from < 0) ? Math.ceil(from) : Math.floor(from);
		if(from < 0)
			from += len;
		for(; from < len; from++) {
			if(from in this && this[from] === elt){
				return from;
			}	
		}
		return -1;
	};
}


方法二:正则表达式

Array.prototype.in_array=function(e){
	var r=new RegExp(','+e+',');
	return r.test(','+this.join(this.S)+',');
};

var arr = [1, 2, 3];
arr.in_array(3);//true

注:此函数只对字符和数字有效。


方法三:arr.find() 

function IsInArray(arr, val) {
	var rel=arr.find((v) => {
		return v == val
	});
	return rel?true:false; 
}
var arr = [1, 2, 3];
IsInArray(arr,3);//true

find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined,  是es6里的。除了上面形式,还可以通过arr.find(callback) 在回调中判断。

function IsInArray(arr, val,callback) {
	arr.find(v => {
	    if (v === val){
	      callback()
	      }
	})
}
var arr = [1, 2, 3];
IsInArray(arr,3,()=>{
	console.log("arr数组中包含了3")
});
//arr数组中包含了3


方法四:for循环结合if判断

Array.prototype.in_array = function (val) { 
  for (var i = 0; i < this.length; i++) { 
  	if (this[i] == val) { 
  		return true; 
    } 
  } 
  return false;
} 
var arr = [1, 2, 3];
arr.in_array(3)//true

该方法兼容性较好,也是平时开发中最常用的方式。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_1454