Array对象的判定

时间:2022-04-24
本文章向大家介绍Array对象的判定,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  /*
    关于JS对象类型的判断,最复杂的在于RegExp和Array了,判定RegExp的情形不较少,而Array就比较多了,下面就是判断Array的方法
     */

    //方法一:利用instanceof来判断对象是不是Array的实例
    function isArray(arr){
        return arr instanceof Array;
    }

    //方法二:利用constructor来判断
    function isArray(arr)
    {
        return !!arr && arr.constructor==Array;
    }

    //方法三:利用constructor和array的内置属性(实例方法)来判断一个对象是否是Array类型
    function isArray(arr) {
        return arr && typeof arr==="object" &&  'splice' in arr && 'join' in arr;
    }

    //方法四:通过sort方法的类型判断arr是不是Array对象的实例
    function isArray(arr)
    {
        return typeof arr.sort==="function";
    }

    //方法五:通过Array.prototype.toString.call()方法来判断对象
    function isArray(o) {
        try
        {
            Array.prototype.toString.call(o);
            return true;
        }
        catch (e)
        {}
        return false;
    }

    //方法六:通过typeof和数组的length属性来判断
    function isArray(o) {
        if(o && typeof o=="object" && typeof o.length=="number" && isFinite(o.length))
        {
            //通过length属性是否符合原生数组的length的特性来进行双重判定
            var _originalLength=o.length;
            o[o.length]="_test_";
            var _newLength=o.length;
            o.length=_originalLength;
            return _newLength==o.length+1;
        }
        return false;
    }

    //方法七:
    function isArray(array) {
        var result=false;
        try
        {
            new array.constructor(Math.pow(2,32));
        }
        catch(e)
        {
            result=/Array/.test(e.message);
        }
        return result;
    }