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"
]

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.

var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];

var foundPresent = $.inArray('specialword', categoriesPresent) > -1;
var foundNotPresent = $.inArray('specialword', categoriesNotPresent) > -1;

console.log(foundPresent, foundNotPresent); // true false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Rediger 3,5 år senere

$.inArray er effektivt en wrapper for Array.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 til Array.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.

var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];

var foundPresent = categoriesPresent.indexOf('specialword') > -1;
var foundNotPresent = categoriesNotPresent.indexOf('specialword') > -1;

console.log(foundPresent, foundNotPresent); // true false

Rediger endnu 3 år senere

Hold da op, 6,5 år?!

Den bedste mulighed for dette i moderne Javascript er Array.prototype.includes:

var found = categories.includes('specialword');

Ingen sammenligninger og ingen forvirrende -1 resultater. Den gør det, vi ønsker: den returnerer true eller false. For ældre browsere er den polyfillable ved hjælp af koden på MDN.

var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];

var foundPresent = categoriesPresent.includes('specialword');
var foundNotPresent = categoriesNotPresent.includes('specialword');

console.log(foundPresent, foundNotPresent); // true false
Kommentarer (22)

Værsgo:

$.inArray('specialword', arr)

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:

if ( $.inArray('specialword', arr) > -1 ) {
    // the value is in the array
}
Kommentarer (0)

Du kan bruge en "for"-sløjfe:

var found = false;
for (var i = 0; i < categories.length && !found; i++) {
  if (categories[i] === "specialword") {
    found = true;
    break;
  }
}
Kommentarer (3)