titanyum - JavaScript'te bir dizi indeksinin var olup olmadığını nasıl kontrol ederim?
Titanium ile çalışıyorum, kodum şöyle görünüyor:
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;
}
currentData dizisine bir indeks geçiriyorum. Yukarıdaki kodu kullanarak hâlâ var olmayan bir indeksi tespit edemiyorum.
Cevap #1
typeof arrayName[index] === 'undefined' kullanın
yani
if(typeof arrayName[index] === 'undefined') {
// does not exist
}
else {
// does exist
}
Cevap #2
var myArray = ["Banana", "Orange", "Apple", "Mango"];
if (myArray.indexOf(searchTerm) === -1) {
console.log("element doesn't exist");
}
else {
console.log("element found");
}
Cevap #3
Bu günlerde ecmascript'ten faydalanır ve onu böyle kullanırdım
return myArr?.[index]
Cevap #4
İşte in operatörünün tam olarak bu işe yaradığını gösteriyor. Şu şekilde kullanın:
if (index in currentData)
{
Ti.API.info(index + " exists: " + currentData[index]);
}
Kabul edilen cevap yanlıştır, eğer index değerinde undefined varsa yanlış negatif verecektir:
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!
}Cevap #5
Yanılıyorsam lütfen biri düzeltin, ama bildiğim kadarıyla aşağıdaki doğrudur:
- Diziler aslında JS’in altında sadece Nesnelerdir
- Böylece,
hasOwnPropertyprototip yöntemiObject'ten "miras alınmıştır" - Benim testlerimde,
hasOwnPropertybir dizi indeksinde herhangi bir şeyin olup olmadığını kontrol edebilir.
Yani, yukarıdakiler doğru olduğu sürece, basitçe şunu yapabilirsiniz:
const arrayHasIndex = (array, index) => Array.isArray(array) && array.hasOwnProperty(index);kullanım :
arrayHasIndex([1,2,3,4],4); çıktısı: false
arrayHasIndex([1,2,3,4],2); çıktısı: true
