titanium - Hur kontrollerar man om ett arrayindex finns eller inte i JavaScript?
Jag arbetar med Titanium, min kod ser ut så här:
var currentData = new Array();
if(currentData[index]!==""||currentData[index]!==null||currentData[index]!=='null')
{
Ti.API.info("is exists " + currentData[index]);
return true;
}
else
{
return false;
}
Jag skickar ett index till currentData-arrayen. Jag kan fortfarande inte upptäcka ett icke-existerande index med koden ovan.
Svar #1
Använd typeofrayName[index] === 'odefinierad'
dvs.
if(typeof arrayName[index] === 'undefined') {
// does not exist
}
else {
// does exist
}
Svar #2
var myArray = ["Banana", "Orange", "Apple", "Mango"];
if (myArray.indexOf(searchTerm) === -1) {
console.log("element doesn't exist");
}
else {
console.log("element found");
}
Svar #3
Nu för tiden skulle jag dra nytta av ecmascript och använda det på det sättet
return myArr?.[index]
Svar #4
Detta är exakt vad in-operatorn är till för. Använd den så här:
if (index in currentData)
{
Ti.API.info(index + " exists: " + currentData[index]);
}
Det accepterade svaret är fel, det kommer att ge ett falskt negativt om värdet vid index är undefined:
const currentData = ['a', undefined], index = 1;
if (index in currentData) {
console.info('exists');
}
// ...vs...
if (typeof currentData[index] !== 'undefined') {
console.info('exists');
} else {
console.info('does not exist'); // incorrect!
}Svar #5
Någon rätta mig gärna om jag har fel, men så vitt jag vet är följande sant:
- Arrayer är egentligen bara objekt under huven på JS
- Således har de prototypmetoden
hasOwnProperty„ärvd“ frånObject - I mina tester kan
hasOwnPropertykontrollera om något finns på ett arrayindex.
Så, så länge ovanstående är sant, kan du helt enkelt:
const arrayHasIndex = (array, index) => Array.isArray(array) && array.hasOwnProperty(index);användning :
arrayHasIndex([1,2,3,4],4); ger: false
arrayHasIndex([1,2,3,4],2); ger: true
