数组和对象区分

二:通过instanceof来判断区分

var arr = [1, 2, 3];
    var obj = {
        name: 'lyl',
        age: 18,
        1: 'name'
    }
    console.log(arr instanceof Array); //true
    console.log(obj instanceof Array); //false

三:通过constructor

var arr = [1, 2, 3];
var obj = {
    name: 'lyl',
    age: 18,
    1: 'name'
}
console.log(arr.constructor === Array); //true
console.log(obj.constructor === Array); //false

四:通过toString()方法,数组原型和对象原型定义的toString()方法不同

var arr = [1, 2, 3];
var obj = {
    name: 'lyl',
    age: 18,
    1: 'name'
}
console.log(Object.prototype.toString.call(arr) === '[object Array]'); //true
console.log(Object.prototype.toString.call(boj) === '[object Array]'); //false

原理参考:http://www.cnblogs.com/ziyunfei/archive/2012/11/05/2754156.html

方五:随便找一个数组仅有的方法,来判断数组和对象谁有该方法即可(样例以sort来举例)
var arr = [1, 2, 3];
var obj = {
    name: 'lyl',
    age: 18,
    1: 'name'
}
  
console.log(arr.sort === Array.prototype.sort); //true
console.log(obj.sort === Array.prototype.sort); //false

判断2个数组是否相等

说明:Array数组为引用类型,所以哪怕 []===[] 都会返回false,所以可通过数组toString()方法返回的字符串判断是否相等。

示例:

console.log([]===[]); // => false
console.log(['a', 'b'] === ['a', 'b']); // => false
console.log(['a', 'b'].toString() === ['a', 'b'].toString()); // true