|
|
@@ -171,34 +171,20 @@ function arrayToTree(data, parent, $id, $pid, $sub) {
|
|
|
return tree;
|
|
|
}
|
|
|
|
|
|
-export { remove, isEqual, getUrlParam, hashcode, delay, dateFormat, arrayToTree };
|
|
|
+function ArrayEquals(arr1, arr2) {
|
|
|
+ if(!arr1 || !arr2) return false;
|
|
|
+ if (arr1.length !== arr2.length) return false;
|
|
|
|
|
|
-// Warn if overriding existing method
|
|
|
-if(Array.prototype.equals)
|
|
|
- console.warn("Overriding existing Array.prototype.equals. Possible causes: New API defines the method, there's a framework conflict or you've got double inclusions in your code.");
|
|
|
-// attach the .equals method to Array's prototype to call it on any array
|
|
|
-Array.prototype.equals = function (array) {
|
|
|
- // if the other array is a falsy value, return
|
|
|
- if (!array)
|
|
|
- return false;
|
|
|
-
|
|
|
- // compare lengths - can save a lot of time
|
|
|
- if (this.length !== array.length)
|
|
|
- return false;
|
|
|
-
|
|
|
- for (var i = 0, l = this.length; i < l; i++) {
|
|
|
- // Check if we have nested arrays
|
|
|
- if (this[i] instanceof Array && array[i] instanceof Array) {
|
|
|
- // recurse into the nested arrays
|
|
|
- if (!this[i].equals(array[i]))
|
|
|
+ for (var i = 0, l = arr1.length; i < l; i++) {
|
|
|
+ if (arr1[i] instanceof Array && arr2[2] instanceof Array) {
|
|
|
+ if (!arr1[i].ArrayEquals(arr2[i]))
|
|
|
return false;
|
|
|
}
|
|
|
- else if (this[i] !== array[i]) {
|
|
|
- // Warning - two different object instances will never be equal: {x:20} != {x:20}
|
|
|
+ else if (arr1[i] !== arr2[i]) {
|
|
|
return false;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
-// Hide method from for-in loops
|
|
|
-Object.defineProperty(Array.prototype, "equals", {enumerable: false});
|
|
|
+
|
|
|
+export { remove, isEqual, getUrlParam, hashcode, delay, dateFormat, arrayToTree, ArrayEquals };
|