比較兩個對象是否徹底相等(深度檢查)數組
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]'; };