1
0
mirror of synced 2024-11-26 23:06:02 +03:00

optimize string comparisons. fixes #743

This commit is contained in:
Igor Vaynberg 2013-01-24 08:31:43 -08:00
parent dc8fbba511
commit acc6f7923e

View File

@ -102,39 +102,18 @@ the specific language governing permissions and limitations under the Apache Lic
nextUid=(function() { var counter=1; return function() { return counter++; }; }()); nextUid=(function() { var counter=1; return function() { return counter++; }; }());
function indexOf(value, array) { function indexOf(value, array) {
var i = 0, l = array.length, v; var i = 0, l = array.length;
for (; i < l; i = i + 1) if (value === array[i]) return i;
if (typeof value === "undefined") {
return -1;
}
if (value.constructor === String) {
for (; i < l; i = i + 1) if (value.localeCompare(array[i]) === 0) return i;
} else {
for (; i < l; i = i + 1) {
v = array[i];
if (v.constructor === String) {
if (v.localeCompare(value) === 0) return i;
} else {
if (v === value) return i;
}
}
}
return -1; return -1;
} }
/** /**
* Compares equality of a and b taking into account that a and b may be strings, in which case localeCompare is used * Compares equality of a and b
* @param a * @param a
* @param b * @param b
*/ */
function equal(a, b) { function equal(a, b) {
if (a === b) return true; return a===b;
if (a === undefined || b === undefined) return false;
if (a === null || b === null) return false;
if (a.constructor === String) return a.localeCompare(b) === 0;
if (b.constructor === String) return b.localeCompare(a) === 0;
return false;
} }
/** /**
@ -491,7 +470,7 @@ the specific language governing permissions and limitations under the Apache Lic
} }
} }
if (original.localeCompare(input) != 0) return input; if (original!==input) return input;
} }
/** /**