Fire forskellige måder at søge på en matrix i JavaScript

Der er forskellige metoder i JavaScript, som du kan bruge til at søge efter et element i en matrix. Hvilken metode du vælger afhænger af din specifikke brugssag.

Vil du f.eks. Have alle elementer i en matrix, der opfylder en bestemt betingelse? Vil du kontrollere, om en vare opfylder betingelsen? Vil du kontrollere, om en bestemt værdi er i arrayet? Eller vil du finde indekset over værdien i arrayet?

I alle disse brugssager har JavaScript's Array.prototype-metoder dækket dig. I denne artikel vil vi diskutere fire metoder, vi kan bruge til at søge efter et element i en matrix. Disse metoder er:

  1. Filter
  2. Finde
  3. Inkluderer
  4. Indeks af

Lad os diskutere hver af dem.

Array.filter ()

Vi kan bruge Array.filter () -metoden til at finde elementer i en matrix, der opfylder en bestemt betingelse. For eksempel, hvis vi ønsker at få alle elementer i en række numre, der er større end 10, kan vi gøre dette:

const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.filter(element => element > 10); console.log(greaterThanTen) //[11, 20]

Syntaksen til brug af array.filter () -metoden er følgende:

let newArray = array.filter(callback);

hvor

  • newArray er det nye array, der returneres
  • array er det array, hvor filtermetoden kaldes
  • callback er tilbagekaldsfunktionen, der anvendes på hvert element i arrayet

Hvis intet element i arrayet opfylder betingelsen, returneres et tomt array. Du kan læse mere om denne metode her.

Der er tidspunkter, hvor vi ikke har brug for alle de elementer, der opfylder en bestemt betingelse. Vi har bare brug for et element, der matcher betingelsen. I så fald har du brug for find () -metoden.

Array.find ()

Vi bruger Array.find () -metoden til at finde det første element, der opfylder en bestemt betingelse. Ligesom filtermetoden tager det et tilbagekald som argument og returnerer det første element, der opfylder tilbagekaldsbetingelsen.

Lad os bruge find-metoden på arrayet i vores eksempel ovenfor.

const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.find(element => element > 10); console.log(greaterThanTen)//11

Syntaksen for array.find () er

let element = array.find(callback);

Tilbagekaldelsen er den funktion, der udføres på hver værdi i arrayet og tager tre argumenter:

  • element - elementet der gentages (krævet)
  • index - indekset / positionen for det aktuelle element (valgfrit)
  • array- det array, der findblev kaldt på (valgfrit)

Bemærk dog, at hvis intet element i arrayet opfylder betingelsen, returneres det undefined.

Hvad hvis du dog vil kontrollere, om et bestemt element er i et array? Hvordan gør du dette?

Array. Inkluderer ()

Metoden inkluderer () bestemmer, om en matrix inkluderer en bestemt værdi og returnerer sandt eller falsk efter behov.

Så i eksemplet ovenfor kan vi gøre dette, hvis vi vil kontrollere, om 20 er et af elementerne i arrayet:

const array = [10, 11, 3, 20, 5]; const includesTwenty = array.includes(20); console.log(includesTwenty)//true

Du vil bemærke en forskel mellem denne metode og andre metoder, vi har overvejet. Denne metode accepterer en værdi i stedet for en tilbagekaldelse som argumentet. Her er syntaksen for den inkluderende metode:

const includesValue = array.includes(valueToFind, fromIndex)

Hvor

  • valueToFind er den værdi, du søger efter i arrayet (påkrævet), og
  • fromIndex er indekset eller placeringen i det array, som du vil begynde at søge efter elementet fra (valgfrit)

For at få begrebet indeks, lad os besøge vores eksempel igen. Hvis vi vil kontrollere, om arrayet indeholder 10 i andre positioner bortset fra det første element, kan vi gøre dette:

const array = [10, 11, 3, 20, 5]; const includesTenTwice = array.includes(10, 1); console.log(includesTenTwice)//false

Array.indexOf ()

Metoden indexOf () returnerer det første indeks, hvor et givet element kan findes i en matrix. Det returnerer -1, hvis elementet ikke findes i arrayet.

Lad os gå tilbage til vores eksempel. Lad os finde indekset på 3 i arrayet.

const array = [10, 11, 3, 20, 5]; const indexOfThree = array.indexOf(3); console.log(indexOfThree)//2

Dens syntaks svarer til includesmetodens.

const indexOfElement = array.indexOf(element, fromIndex)

Hvor

  • element er det element, du søger efter i arrayet (påkrævet), og
  • fromIndex er indekset eller placeringen i det array, som du vil begynde at søge efter elementet fra (valgfrit)

Det er vigtigt at bemærke, at både metoder includesog indexOfmetoder bruger streng lighed ('===') til at søge i arrayet. Hvis værdierne er af forskellige typer (for eksempel '4' og 4), vender de tilbage falseog -1henholdsvis.

Resumé

Med disse matrixmetoder behøver du ikke bruge en for loop til at søge i en matrix. Afhængigt af hvad du har brug for, kan du beslutte, hvilken af ​​metoderne der er bedst egnet til din brugssag.

Her er et resumé af, hvornår man skal bruge hver metode:

  • Brug, filterhvis du vil finde alle elementer i en matrix, der opfylder en bestemt betingelse.
  • Brug, findhvis du vil kontrollere, om mindst en vare opfylder en bestemt betingelse.
  • Brug, includeshvis du vil kontrollere, om en matrix indeholder en bestemt værdi.
  • Brug, indexOfhvis du vil finde indekset for et bestemt element i en matrix.

Vil du blive underrettet, når jeg offentliggør en ny artikel? Klik her.