您的位置:

详细解析js数组是否包含

一、如何判断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数组是否包含的方法。在实际开发中可以根据实际需求选择合适的方法使用。如果数组对象存放的是对象,则需要特别处理。