//辅助方法1,返回某个值在数组中的位置 Array.prototype.indexOf = function (e) { for (var i = 0, l = this.length; i < l; i++) { if (this[i] == e) return i; } return -1; } //辅助方法2,数组中移除元素 Array.prototype.remove = function (val) { var index = -1; for (var i = 0, l = this.length; i < l; i++) { if (this[i] == val) index = i; } if (index > -1) { this.splice(index, 1); } }; //比对算法 Array.prototype.compare = function (arr) { var self = this, flag = true, arrLength = arr.length; if (!$.isArray(arr)) { throw "比对数组参数类型错误"; return false; } else if (self.length !== arr.length) { //长度不等,直接判定为不等 return false; } while (arrLength--) { var arrVal = arr[arrLength]; //存在 if (self.inArray(arrVal)) { //元素相等,移除该元素 self.remove(arrVal); arr.remove(arrVal); } else { flag = false; return; } } //比对记录全部相等,并且还有元素,继续调用递归 if (flag && self.length > 0) { self.compare(arr); } return flag; }
调用方式:arr1.compare(arr2);接收返回值