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