Miten tarkistan JavaScriptissä, onko arvo olemassa tietyssä array-indeksissä?

Toimiiko tämä, kun testataan, onko paikassa "index" oleva arvo olemassa vai ei, vai onko olemassa parempi tapa:

if(arrayName[index]==""){
     // do stuff
}
Ratkaisu

Kaikki JavaScriptissä käytettävät matriisit sisältävät array.length-alkioita, alkaen array[0]-alkioista ainaarray[array.length - 1]-alkioihin asti. Määritelmän mukaan indeksillä i olevan elementin sanotaan olevan osa arraya, jos i on välillä 0 ja array.length - 1 (mukaan lukien).

Toisin sanoen JavaScript-määritteet ovat lineaarisia, alkaen nollasta ja jatkuen maksimiin, eikä määritteillä ole mekanismia, jolla tietyt arvot tai alueet voidaan sulkea pois määritteestä. Saadaksesi selville, onko arvo olemassa tietyssä kohdassa indeksillä (jossa indeksi on 0 tai positiivinen kokonaisluku), voit kirjaimellisesti vain käyttää komentoa

if (index < array.length) {
  // do stuff
}

On kuitenkin mahdollista, että jotkin array-arvot ovat nolla, undefined, NaN, Infinity, 0 tai monia muita arvoja. Jos esimerkiksi lisäät array-arvoja kasvattamalla array.length-ominaisuutta, kaikki uudet arvot ovat undefined.

Määrittääksesi, onko annettu arvo jotain merkityksellistä vai onko se määritelty. Eli ei undefined tai null:

if (typeof array[index] !== 'undefined') {

tai

if (typeof array[index] !== 'undefined' && array[index] !== null) {

Mielenkiintoista on, että JavaScriptin vertailusääntöjen ansiosta viimeinen esimerkkini voidaan optimoida tähän:

if (array[index] != null) {
  // The == and != operators consider null equal to only null or undefined
}  
Kommentit (12)
if(!arrayName[index]){
     // do stuff
}
Kommentit (2)
if(arrayName.length > index && arrayName[index] !== null) {
    //arrayName[index] has a value
}
Kommentit (7)