判断两个数组是否相等(包括数组里边的键值对是否相等)
// 1.判断是否为空 let isNotBlank = value => { if (value === null || value === undefined || value !== value || value === 'null' || value === 'undefined' || value === 'NaN' || value === '') { return false; } else { let jsonStr = null; try { jsonStr = JSON.stringify(value); } catch (error) { jsonStr = "" } if (jsonStr === "{}") { return false; } return true; } } // 2.判断两个数组是否相等(包括数组里的键值是否相等) let oldArr = [1,2,3]; let newArr = [1,3,2]; Array.prototype.equals = function(array, key, order) { // array--要比较的数组(必需) // key--如果数组里边包裹着对象,则可以比较对象的某个键值对(可选) // order--数组中的顺序是否可以打乱(可选) if (!array instanceof Array) return false; if (this.length != array.length) return false; if(order) {// 顺序要求一致 for (let i = 0; i < this.length; i++) { if (isNotBlank(key)) { if (this[i][key] !== array[i][key]) { return false; break; } } else { if (this[i] !== array[i]) { return false; break; } } } } else {// 顺序可以不一致 for (let i = 0; i < this.length; i++) { let log = false; for(let j = 0; j < array.length; j++) { if(isNotBlank(key)) { if (this[i][key] === array[j][key]) { log = true; break; } } else { if(this[i] === array[j]) { log = true; break; } } } if(!log) { return false; break; } } } return true; } Object.defineProperty(Array.prototype, "equals", {enumerable: false}); console.log(oldArr.equals(newArr));// true; console.log(oldArr.equals(newArr, null, true))// false