在JavaScript中,我們?nèi)绾闻袛鄡蓚€數(shù)組是否相同。使用"=="或"==="運(yùn)算符直接比較兩個數(shù)組對象是不行的。文章來源:http://www.zghlxwxcb.cn/article/533.html
原理
我們需要添加一個自定義的方法equals到JavaScript的Array.prototype原型對象上。我們就可以通過調(diào)用該方法來判斷兩個數(shù)組是否相同。文章來源地址http://www.zghlxwxcb.cn/article/533.html
完整代碼
// 如果覆蓋現(xiàn)有方法則發(fā)出警告 if (Array.prototype.equals) console.warn("覆蓋現(xiàn)有的 Array.prototype.equals??赡艿脑颍盒碌?nbsp;API 定義了該方法,存在框架沖突,或者代碼中有雙重包含。"); // 將 .equals 方法附加到 Array 的原型以在任何數(shù)組上調(diào)用它 Array.prototype.equals = function (array) { // 如果另一個數(shù)組是假值,則返回 if (!array) return false; // 比較長度 - 可以節(jié)省大量時間 if (this.length != array.length) return false; for (var i = 0, l = this.length; i < l; i++) { // 檢查是否有嵌套數(shù)組 if (this[i] instanceof Array && array[i] instanceof Array) { // 遞歸到嵌套數(shù)組 if (!this[i].equals(array[i])) return false; } else if (this[i] != array[i]) { // 警告 - 兩個不同的對象實(shí)例永遠(yuǎn)不會相等: {x:20} != {x:20} return false; } } return true; } // 隱藏 for-in 循環(huán)中的方法 Object.defineProperty(Array.prototype, "equals", { enumerable: false });
使用方法
var arr1 = [1, 2, 3]; var arr2 = [1, 2, 3]; var arr3 = [1, 2, 4]; console.log(arr1.equals(arr2)); // 輸出: true,arr1 與 arr2 相等 console.log(arr1.equals(arr3)); // 輸出: false,arr1 與 arr3 不相等
到此這篇關(guān)于JavaScript中判斷數(shù)組是否相同的方法及示例代碼的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!