0
Supposing I have a string:
Lorem ipsum dolor sit Amet, consectetur adipiscing Elit. Praesent eget leo consectetur, condimentum est eu, convallis dolor. Aliquam fringilla et odio a congue. Phasellus accumsan, velit in elementum porttitor, massa mi tristique velit, non molestie tellus nisl et odio. Sed id Orci mollis ex egestas semper. Cras diam Purus, Viverra a Arcu non, placerat suscipit sapien. Sed suscipit tincidunt urna, in accumsan lacus suscipit a. Suspendisse ut imperdiet urna, a ultricies ex. Vivamus eu pellentesque risus, vitae suscipit odio. Nam enim leo, auctor nec molestie non, gravida felis..."
And you want to scan this string using an array of strings to know what "matchs" you find in it, how can I do it in a more performative way than using the
indexOf()
follows example of my code:
var strErro = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eget leo consectetur, condimentum est eu, convallis dolor. Aliquam fringilla et odio a congue. Phasellus accumsan, velit in elementum porttitor, massa mi tristique velit, non molestie tellus nisl et odio. Sed id orci mollis ex egestas semper. Cras diam purus, viverra a arcu non, placerat suscipit sapien. Sed suscipit tincidunt urna, in accumsan lacus suscipit a. Suspendisse ut imperdiet urna, a ultricies ex. Vivamus eu pellentesque risus, vitae suscipit odio. Nam enim leo, auctor nec molestie non, gravida vel felis. In pharetra dolor urna, at mattis lectus finibus in. Praesent sed facilisis diam. Pellentesque ornare luctus placerat. Aenean nisl augue, hendrerit ac metus id, fringilla tempor eros. Aliquam erat volutpat. Quisque feugiat, augue vitae cursus scelerisque, libero sem pellentesque neque, non vehicula urna urna vel justo. Curabitur fringilla finibus fringilla. Curabitur fermentum eros vel massa hendrerit euismod. Curabitur scelerisque ipsum a est egestas, accumsan elementum augue interdum. Duis ex turpis, placerat non tincidunt tincidunt, viverra at lorem. Proin sapien nisi, semper in velit quis, egestas placerat eros. Pellentesque non felis auctor massa rhoncus auctor. Aenean feugiat suscipit ex, eu porttitor neque vestibulum nec. Donec sollicitudin euismod vestibulum. Proin varius, ex ac dignissim cursus, enim ex convallis quam, vel porta ante nisl tempor dui. Pellentesque vel facilisis velit, eget pharetra velit. Nulla fermentum vel turpis vel rutrum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer mattis metus auctor, volutpat justo sed, porta ante. Donec tincidunt rhoncus urna non finibus. Pellentesque ut venenatis nisi. Praesent bibendum est id sapien consequat, a molestie tellus sollicitudin. Donec nec ligula at est lacinia finibus ac id diam. Praesent efficitur diam eu diam porttitor, quis ullamcorper justo consectetur. Suspendisse lectus enim, ornare venenatis ipsum ac, efficitur sollicitudin enim. Sed at enim tempus, vestibulum arcu et, scelerisque dui. Etiam eu malesuada eros, nec rutrum justo. Cras a odio maximus, tristique nisl at, ullamcorper nibh. Nunc quis interdum magna. Ut et eros ac ligula tristique sodales et iaculis justo. Sed aliquet nulla vitae leo scelerisque, non lacinia odio efficitur. Aliquam mauris magna, dictum nec mauris et, congue viverra ligula. Aliquam vestibulum ligula in augue venenatis viverra. Pellentesque in urna at nulla placerat consectetur a eu arcu. Fusce augue mauris, suscipit vel libero eu, vulputate iaculis nunc. Aenean condimentum neque quis urna egestas, ut feugiat ex efficitur. Morbi vitae ante erat. Fusce pretium quam vel purus maximus, ut rutrum mi volutpat. Cras pellentesque aliquam justo, ut maximus lorem consectetur sit amet. Sed nec leo sed magna scelerisque euismod at eget urna.";
var erros = "";
var found = false;
var ini;
var erro = ["erro1", "erro2", "erro3", "tempor"];
for (var i=0; i<erro.length;i++){
ini = strErro.indexOf(erro[i]);
if (ini!=-1 && found){
erros+= erro[i]+" ";
} else if (ini!=-1) {
erros+= erro[i]+" ";
found=true;
}
}
if (!found) {
strErro;
} else {
erros;
}
@Rafael Acioly Thanks for helping keep the post more organized and clean!
– Tiaurls
And what’s the problem? The function
indexOf
no longer solves your case?– Woss
@Andersoncarloswoss I would like to know if there is any more performative way.
– Tiaurls
In this reply there are 6 ways to do and a test of which it concludes that the
indexOf
is the fastest way (for this situation).– Woss
@Andersoncarloswoss In my test the "regex"* was the most performative, but I believe the gain is not so great.
– Tiaurls
http://jsben.ch/#/xm2BV In most tests, indexes end up being faster than traditional loops
– MarceloBoni