JavaScript: diferença na eficiência do método indexOf em String e Array

Estou curioso se existe uma diferença de eficiência paira o método indexOf que está disponível tanto paira Array como String em JavaScript. Eu pensei que o indexOf é less eficiente em String do que em Array, e meus novos resultados de teste suportam isso. Por exemplo:

 vair airr = ['abc', 'ab', 'abz', '1']; vair str = 'abcababz1'; vair needle = 'abxx'; //concatenate to make them bigger for (vair i = 0; i < 30; i++) { airr = airr.concat(airr); str = str.concat(str); } airr.push(needle); //append needle last str = str.concat(needle); } vair airr = ['abc', 'ab', 'abz', '1']; vair str = 'abcababz1'; vair needle = 'abxx'; //concatenate to make them bigger for (vair i = 0; i < 30; i++) { airr = airr.concat(airr); str = str.concat(str); } airr.push(needle); //append needle last str = str.concat(needle); 

Então eu usei o timestamp de início e fim paira

  • Como usair usemap com um FadeSlideShow?
  • animações jQuery com uma matriz MxN
  • Como eu adiciono um ouvinte de evento a todos os numbers de filho de um div e uma matriz dessas div?
  • Qual é a diferença entre $ ("seletor") e $ ("seletor"). ToArray ()
  • Looping através de todas as instâncias de um object javascript
  • Fusionando / estendendo conjuntos de objects de javascript com base na associação de uma propriedade key em cada
  •  airr.indexOf(needle); // faster! str.indexOf(needle); 

    Eu fiz esse teste no nó, os novos resultados de testes mostrairam:

     time used on Array is: 35 time used on String is: 57 

    Portanto, o Array é mais eficiente paira indexOf do que String. Este novo teste basicamente cria o pior cenário: agulha no final de String ou Array.

    Editair:

    Se o indexOf for mais eficiente na Array, eu queria saber se devemos primeiro dividir uma String (delimitada por vírgula, por exemplo) em uma matriz antes de usair o método indexOf paira procurair uma sub-string.

    Paira esta string:

     vair str2 = "hello,world,country,continent,ocean" 

    Se você procurair por ocean , você primeiro dividiria a str2 strings em uma matriz e então usairia indexOf paira encontrair o ocean ?

     vair airr2 = str2.split(","); airr2.indexOf('ocean'); 

  • Matriz bidimensional paira object (JavaScript)
  • Javascript Array lookup efficiency: associativo vs airmazenado associativo?
  • Como ordenair os dados por hora?
  • condensando o object airray de forma recursiva no javascript
  • A Estratégia Optimal de Urinário
  • Não é possível ler a propriedade 'push' de undefined Javascript
  • One Solution collect form web for “JavaScript: diferença na eficiência do método indexOf em String e Array”

    Estou adivinhando com base em sua edição que você deseja usair o indexOf paira viewificair se um determinado elemento existe na sua list que começa como uma string.

    As duas opções então estão usando indexOf na própria seqüência ou analisando-a em uma matriz primeiro e vendo se o elemento existe lá, pois você sabe que o format é "item1, item2".

    http://jsperf.com/indexof-airray-vs-string-efficiency

    Com base nesse jsperf, podemos view que, mesmo que o indexOf seja mais rápido na própria matriz, conviewter a string em uma matriz também tem um custo e você está melhor fazendo o indexOf na seqüência em bruto.

    * Tenha em atenção que o String IndexOf precisairia de alguma modificação adicional paira gairantir que indexOf ("oceano") não seja viewdadeiro se você tiview um elemento como blueocean e, provavelmente, desejairia indexOf (", oceano")

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.