比较两个对象是否彻底相等(深度检查)数组
function isObjectAllEqual (a, b) { if ( a === void 0 ) a = {}; if ( b === void 0 ) b = {}; if (!a || !b) { return a === b } //a或者b存在且不为空对象的时候作对比 var aKeys = Object.keys(a); //a对象全部键组成的数组 var bKeys = Object.keys(b); //b对象全部键组成的数组 if (aKeys.length !== bKeys.length) {//先比较ab键组成的数组长度是否相同 return false } // 肯定数组的全部成员是否知足指定的测试。 return aKeys.every(function (key) { var aVal = a[key]; var bVal = b[key]; // check nested equality if (typeof aVal === 'object' && typeof bVal === 'object') { return isObjectEqual(aVal, bVal) } return String(aVal) === String(bVal) }) }
验证数组测试
var isarray = Array.isArray || function (arr) { return Object.prototype.toString.call(arr) == '[object Array]'; };