# Optimum way to compare strings in JavaScript? [duplicate]

I am trying to optimize a function which does binary search of strings in JavaScript.

Binary search requires you to know whether the key is `==` the pivot or `<` the pivot.

But this requires two string comparisons in JavaScript, unlike in `C` like languages which have the `strcmp()` function that returns three values `(-1, 0, +1)` for (less than, equal, greater than).

Is there such a native function in JavaScript, that can return a ternary value so that just one comparison is required in each iteration of the binary search? Well in JavaScript you can check two strings for values same as integers so yo can do this:

• `"A" < "B"`
• `"A" == "B"`
• `"A" > "B"`

And therefore you can make your own function that checks strings the same way as the `strcmp()`.

So this would be the function that does the same:

``````function strcmp(a, b)
{
return (a<b?-1:(a>b?1:0));
}
`````` You can use the `localeCompare()` method.

``````string_a.localeCompare(string_b);

/* Expected Returns:

0:  exact match

-1:  string_a < string_b

1:  string_a > string_b

*/
`````` You can use the comparison operators to compare strings. A `strcmp` function could be defined like this:

``````function strcmp(a, b) {
if (a.toString() < b.toString()) return -1;
if (a.toString() > b.toString()) return 1;
return 0;
}
``````

Edit    Here’s a string comparison function that takes at most min { length(a), length(b) } comparisons to tell how two strings relate to each other:

``````function strcmp(a, b) {
a = a.toString(), b = b.toString();
for (var i=0,n=Math.max(a.length, b.length); i<n && a.charAt(i) === b.charAt(i); ++i);
if (i === n) return 0;
return a.charAt(i) > b.charAt(i) ? -1 : 1;
}
``````