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:

  1. Diziler aslında JS’in altında sadece Nesnelerdir
  2. Böylece, hasOwnProperty prototip yöntemi Object'ten "miras alınmıştır"
  3. Benim testlerimde, hasOwnProperty bir 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

İlgili makaleler