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
}
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
}