JavaScript 怎么判断变量是否为数组


Array.isArray

直接使用 Array.isArray是最简单的方式 ,它现在已经在大部分浏览器中都能使用,作用是检查任意 JS 对象是否为数组


            let arr = [1,2,3,4,5];
            let obj = {};
            let str = "string";
            let num = 12345;
            let undef = undefined;

            Array.isArray(arr);   // true
            Array.isArray(obj);   // false
            Array.isArray(str);   // false
            Array.isArray(num);   // false
            Array.isArray(undef); // false
        

其他方式

在不支持 Array.isArray 的老版本浏览器中,我们可以检查对象的原型来判断是否为数组


            /**
            * 判断数据类型是否为数组
            */
            function isArray(data) {
                return Object.prototype.toString.call(data) === '[object Array]';
            }

            let arr = [1,2,3,4,5];
            let obj = {};
            let str = "string";
            let num = 12345;
            let undef = undefined;

            isArray(arr);   // true
            isArray(obj);   // false
            isArray(str);   // false
            isArray(num);   // false
            isArray(undef); // false
        

使用第三方库

Lodash 中的 isArray 函数可以用来判断数组,案例如下:


            _.isArray([1, 2, 3]);
            // => true
            
            _.isArray(document.body.children);
            // => false
            
            _.isArray('abc');
            // => false
            
            _.isArray(_.noop);
            // => false
        

back home