// 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