Kontroller, om et element er til stede i et array
Den funktion, jeg bruger nu til at kontrollere dette, er følgende:
function inArray(needle,haystack)
{
var count=haystack.length;
for(var i=0;i<count;i++)
{
if(haystack[i]===needle){return true;}
}
return false;
}
Det virker. Det jeg'er på udkig efter er om der er en bedre måde at gøre dette på.
504
3
Kode:
Udførelse:
Opdatering (2017):
I moderne browsere, der følger ECMAScript 2016-standarden (ES7), kan du bruge funktionen Array.prototype.includes, som gør det meget nemmere at kontrollere, om et element er til stede i et array:
Du skal blot bruge
indexOf
:Hvis du ønsker at understøtte gamle Internet Explorers (< IE9), er du nødt til inkludere din nuværende kode som en løsning.
Medmindre din liste er sorteret, skal du sammenligne hver værdi med nålen. Derfor vil både din løsning og
indexOf
skulle udføren/2
sammenligninger i gennemsnit. DaindexOf
imidlertid er en indbygget metode, kan den bruge yderligere optimeringer og vil i praksis være lidt hurtigere. Bemærk, at medmindre dit program søger ekstremt ofte i lister (f.eks. 1000 gange i sekundet), eller hvis listerne er enorme (f.eks. 100k poster), vil hastighedsforskellen ikke have nogen betydning.Du kan bruge funktionen _contains fra underscore.js-biblioteket til at opnå dette: