Hvordan finder man ud af, om et array indeholder en bestemt streng i JavaScript/jQuery?
Er der nogen der kan fortælle mig hvordan jeg kan finde ud af om "specialword"
forekommer i et array? Eksempel:
categories: [
"specialword"
"word1"
"word2"
]
564
3
jQuery tilbyder
$.inArray
:Bemærk, at inArray returnerer indekset for det fundne element, så
0
angiver, at elementet er det første i arrayet.-1
angiver, at elementet ikke blev fundet.Rediger 3,5 år senere
$.inArray
er effektivt en wrapper forArray.prototype.indexOf
i browsere, der understøtter det (næsten alle i dag), mens det er en shim i de browsere, der ikke understøtter det. Det svarer stort set til at tilføje en shim tilArray.prototype
, hvilket er en mere idiomatisk/JSish måde at gøre tingene på. MDN indeholder sådan kode. I disse dage ville jeg tage denne mulighed, frem for at bruge jQuery-wrapper.Rediger endnu 3 år senere
Hold da op, 6,5 år?!
Den bedste mulighed for dette i moderne Javascript er
Array.prototype.includes
:Ingen sammenligninger og ingen forvirrende
-1
resultater. Den gør det, vi ønsker: den returnerertrue
ellerfalse
. For ældre browsere er den polyfillable ved hjælp af koden på MDN.Værsgo:
Denne funktion returnerer et positivt heltal (array-indekset for den angivne værdi) eller
-1
, hvis den angivne værdi ikke findes i arrayet.Live demo: http://jsfiddle.net/simevidas/5Gdfc/
Du ønsker sandsynligvis at bruge denne som følger:
Du kan bruge en "for"-sløjfe: