一、如何判断js数组是否包含某个元素?
function isContainElement(arr, element){
for(var i=0; i<arr.length; i++){
if(arr[i]==element){
return true;
}
}
return false;
}
//demo
var arr = [1, 2, 3, "a", "b", "c"];
var element1 = "a";
var element2 = "d";
console.log(isContainElement(arr, element1)); // 输出.true
console.log(isContainElement(arr, element2)); // 输出.false
这是js中最基础也是最常用的判断数组包含元素的方法。可以简单地通过循环判断是否存在某个元素。
二、es6语法中的includes方法
//es6新增的Array.prototype.includes()方法
var arr = [1, 2, 3, "a", "b", "c"];
console.log(arr.includes("a")); // 输出.true
console.log(arr.includes("d")); // 输出.false
es6新增了Array.prototype.includes()方法,使用这个方法可以更加简单地判断数组是否包含某个元素。
三、利用indexOf方法判断
var arr = [1, 2, 3, "a", "b", "c"];
console.log(arr.indexOf("a")!=-1); // 输出.true
console.log(arr.indexOf("d")!=-1); // 输出.false
在ie7及以上版本和大部分其他浏览器中,数组对象也有一个indexOf方法,这个方法也可以用于判断数组是否包含某个元素。indexOf返回的是元素在数组中第一次出现的位置,如果找不到则返回-1。
四、问题解决:如何对数组对象进行包含判断?
var obj1 = {name:"Tom", age:25};
var obj2 = {name:"Jerry", age:30};
var obj3 = {name:"Lucy", age:28};
var arr = [obj1, obj2, obj3];
function isContainObj(arr, obj){
for(var i=0; i<arr.length; i++){
if(JSON.stringify(arr[i])===JSON.stringify(obj)){
return true;
}
}
return false;
}
console.log(isContainObj(arr, {name:"Tom", age:25})); // 输出.true
console.log(isContainObj(arr, {name:"Tom", age:20})); // 输出.false
如果数组对象中存放的是对象,要进行包含判断也需要特别处理。常用的方法是比较对象的json字符串是否相同。
五、结语
通过以上内容,我们可以学习到多种js数组是否包含的方法。在实际开发中可以根据实际需求选择合适的方法使用。如果数组对象存放的是对象,则需要特别处理。