Hur kontrollerar jag i JavaScript om det finns ett värde vid ett visst arrayindex?

Fungerar detta för att testa om ett värde på position "index" finns eller inte, eller finns det ett bättre sätt?

if(arrayName[index]==""){
     // do stuff
}
Lösning

Alla matriser i JavaScript innehåller array.length-element, från array[0] till array[array.length - 1]. Per definition sägs ett arrayelement med index i vara en del av arrayen om i är mellan 0 och array.length - 1.

JavaScript-matriser är alltså linjära, med noll som startpunkt och ett maximum, och matriser har ingen mekanism för att utesluta vissa värden eller intervall från matrisen. För att ta reda på om det finns ett värde vid ett visst positionsindex (där index är 0 eller ett positivt heltal) använder du bokstavligen bara

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

Det är dock möjligt för vissa arrayvärden att vara noll, undefined, NaN, Infinity, 0, eller en hel mängd olika värden. Om du till exempel lägger till arrayvärden genom att öka egenskapen array.length kommer alla nya värden att vara undefined.

För att avgöra om ett givet värde är något meningsfullt eller om det har definierats. Det vill säga inte undefined eller null:

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

eller

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

Intressant nog kan mitt sista exempel optimeras till följande på grund av JavaScript:s jämförelseregler:

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