在JavaScript中,我们如何判断两个数组是否相同。使用"=="或"==="运算符直接比较两个数组对象是不行的。文章来源:https://www.toymoban.com/diary/js/533.html
原理
我们需要添加一个自定义的方法equals到JavaScript的Array.prototype原型对象上。我们就可以通过调用该方法来判断两个数组是否相同。文章来源地址https://www.toymoban.com/diary/js/533.html
完整代码
// 如果覆盖现有方法则发出警告 if (Array.prototype.equals) console.warn("覆盖现有的 Array.prototype.equals。可能的原因:新的 API 定义了该方法,存在框架冲突,或者代码中有双重包含。"); // 将 .equals 方法附加到 Array 的原型以在任何数组上调用它 Array.prototype.equals = function (array) { // 如果另一个数组是假值,则返回 if (!array) return false; // 比较长度 - 可以节省大量时间 if (this.length != array.length) return false; for (var i = 0, l = this.length; i < l; i++) { // 检查是否有嵌套数组 if (this[i] instanceof Array && array[i] instanceof Array) { // 递归到嵌套数组 if (!this[i].equals(array[i])) return false; } else if (this[i] != array[i]) { // 警告 - 两个不同的对象实例永远不会相等: {x:20} != {x:20} return false; } } return true; } // 隐藏 for-in 循环中的方法 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 不相等
到此这篇关于JavaScript中判断数组是否相同的方法及示例代码的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!