Ótima maneira de comparar strings em JavaScript?

Eu estou tentando otimizar uma function que faz pesquisa binária de seqüências de caracteres em JavaScript.

A pesquisa binária exige que você saiba se a chave é == o pivô ou < o pivô.

Mas isso requer duas comparações de strings em JavaScript, diferentemente das linguagens C que possuem a function strcmp() que retorna três valores (-1, 0, +1) para (menor que, igual, maior que).

Existe essa function nativa em JavaScript, que pode retornar um valor ternário para que apenas uma comparação seja necessária em cada iteração da pesquisa binária?

Você pode usar o método localeCompare() .

 string_a.localeCompare(string_b); /* Expected Returns: 0: exact match -1: string_a < string_b 1: string_a > string_b */ 

Leitura adicional:

  • Stack Overflow – Existe um strcmp () JavaScript?
  • Tutorials Point: JavaScript String – método localeCompare ()

Bem, em JavaScript, você pode verificar duas strings para valores iguais aos inteiros, para que você possa fazer isso:

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

E, portanto, você pode fazer sua própria function que verifica strings da mesma maneira que o strcmp() .

Então, essa seria a function que faz o mesmo:

 function strcmp(a, b) { return (ab?1:0)); } 

Você pode usar os operadores de comparação para comparar strings . Uma function strcmp poderia ser definida assim:

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

Editar Aqui está uma function de comparação de string que leva no minimo {length ( a ), length ( b )} comparações para dizer como duas strings se relacionam entre si:

 function strcmp(a, b) { a = a.toString(), b = b.toString(); for (var i=0,n=Math.max(a.length, b.length); i b.charAt(i) ? -1 : 1; } 
    Intereting Posts