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