sirve que para length contar comparar array javascript string optimization comparison binary-search

que - string length javascript



¿Una forma óptima de comparar cadenas en JavaScript? (3)

Bueno, en JavaScript puede verificar dos cadenas para valores iguales a los números enteros para que pueda hacer esto:

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

Y, por lo tanto, puedes hacer tu propia función que verifique las cadenas de la misma manera que el strcmp() .

Entonces esta sería la función que hace lo mismo:

function strcmp(a, b) { return (a<b?-1:(a>b?1:0)); }

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de optimizar una función que hace búsquedas binarias de cadenas en JavaScript.

La búsqueda binaria requiere que usted sepa si la clave es == el pivote o < el pivote.

Pero esto requiere dos comparaciones de cadenas en JavaScript, a diferencia de los C similares a C que tienen la función strcmp() que devuelve tres valores (-1, 0, +1) para (menor que, igual, mayor que).

¿Existe tal función nativa en JavaScript que pueda devolver un valor ternario de modo que solo se requiera una comparación en cada iteración de la búsqueda binaria?


Puedes usar los operadores de comparación para comparar cadenas . Una función strcmp podría definirse así:

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

Editar Aquí hay una función de comparación de cadenas que toma como máximo comparaciones de min {length ( a ), length ( b )} para decir cómo se relacionan dos cadenas entre sí:

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; }