Question: 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?

Answer: 
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 comparison operators to compare strings](https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String#Comparing_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;
}

```