Toimiiko tämä, kun testataan, onko paikassa "index" oleva arvo olemassa vai ei, vai onko olemassa parempi tapa:
if(arrayName[index]==""){
// do stuff
}
Kaikki JavaScriptissä käytettävät matriisit sisältävät array.length
-alkioita, alkaen array[0]-alkioista aina
array[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
}