Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Javascript array içindeki undefined elementler array boyutunu etkiler mi

Merhaba;
VT'den aldığım id'lerin array anahtarları olduğu bir Array oluşturmak istiyorum.
Örneğin veritabanımdaki id'ler 1-2-3-6-67-234 diye sıralanmış olsun. Benim Arrayım o halde
arrayım[1] ='birşeyler';
arrayım[2]='Birşeyler'
arrayım[3]='Birşeyler'
arrayım[6]='Birşeyler'
arrayım[67]='Birşeyler'
arrayım[234]='Birşeyler'
şeklinde olacak. Şimdi soruma geliyorum. Arraydaki son index'in '234' olması sebebiyle Array bilgisayarın hafızasında '234' birimlik yer mi kaplar, yoksa Array'ımda toplam 6 eleman olduğu için sadece bu 6 veri mi yer kaplar?
alert(array.length) = 235 sonucunu döndürüyor bu arada
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • fka adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    70 cevap - 0 soru
    Etkilemez.

    alert([undefined, undefined].length); //2 verir.
    
    • yunusy adlı üyenin fotoğrafı yunusy
      Hocam etkilemez derken hangisini kastettiğini anlayamadım:) Array şimdi 6 birimlik mi oldu yoksa 234 birimlik mi .
      10 yıl önce yazılmış
    • fka adlı üyenin fotoğrafı fka
      6 birimlik yer kaplar :)
      10 yıl önce yazılmış
    • fka adlı üyenin fotoğrafı fka
      Tersten gidelim,

      var deneme = new Array();
      deneme[9876543210] = 'test';
      


      gibi bişeyin ram'i doldurduğunu düşünebiliriz ama doldurmaz dimi?

      Burdan anlıyoruz ki, javascript length değerini en yüksek key'in 1 fazlası olarak alıyor :)
      10 yıl önce yazılmış
    • fka adlı üyenin fotoğrafı fka
      Bunu araştırmamız lazım :)
      10 yıl önce yazılmış
    • serdar_alkan adlı üyenin fotoğrafı serdar_alkan
      bence 235 birimlik yer kaplar gibi geliyor. Çünkü array deki her index numarasını bir göz olarak düşünürsek 235 göz var ve 6 sı dolu bunun. C den hatırladığım kadarıyla, index numarası kadar alan yaratılıyordu dizi için. O kadar alan kaplamış oluyordu yani. Bide şu var sen dizinin lengt i kadar döngüye sokarsan foreach döngüsünü düşünelim 235 kere döngü yapcak diyelim echo latacaksın 235 tane satır çıkarıyor yani.

      C deki mantık bunda da varsa yer kaplar yani. Onun yerine şu şekil bir mantık dizi kullansan olmaz mı?

      array( 0=> '1', 1 =>'2', 2 => '3', 3 =>'65', 4 =>'234') şeklinde o zaman 6 tane elemanlık yer kaplıyor.
      10 yıl önce yazılmış
    • fka adlı üyenin fotoğrafı fka
      Konu ile ilgili kaynaklar:

      http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/
      https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
      http://stackoverflow.com/questions/126100/how-to-efficiently-count-the-number-of-keys-properties-of-an-object-in-javascript

      Mozilla dev'de şöyle diyor:

      An array is an ordered set of values associated with a single variable name. Note that you shouldn't use it as an associative array, use Object instead.

      var arrayim = {}; //key-pair eşleşmelerini object ile kurmak en doğrusu diyor mozilla, çünkü array single değerlerin kümesidir diyor.
      arrayim[1] = 'test';
      arrayim[2] = 'test2';
      arrayim[10] = 'test3';
      arrayim[200] = 'test4';
      
      var array_length = keys(arrayim).length; //trick burada
      
      alert( array_length ); // 4 verecek.
      


      Benden bu kadar, sayende ben de bişeyler öğrenmiş oldum :)
      10 yıl önce yazılmış
    • yunusy adlı üyenin fotoğrafı yunusy
      Array elemanlarını dinamik olarak sileceğim. Bir eleman var mı diye bakmak için her defasında for döngüsü oluşturup, elemanınd eğeri bu mu diye bakmak yerine direkt array[index] diyerek silmek istiyorum. O yüzden böyle bir soru geldi aklıma
      10 yıl önce yazılmış
    • yunusy adlı üyenin fotoğrafı yunusy
      fka çok teşekkürler
      Öncelikle [] yerine {} kullanarak object oluşturduk. Bunu bir arraymış gibi kullanacağız.. Ben de sanırım sorunumu bu şekilde halledebilirim.
      Bu arada alert(array_length); kısmı alert vermiyor :)
      10 yıl önce yazılmış
    • fka adlı üyenin fotoğrafı fka
      var array_length = keys(arrayim).length;
      


      yapınca da mı vermiyor? Browser farklılığı olabilir mi acaba?
      10 yıl önce yazılmış
    • serdar_alkan adlı üyenin fotoğrafı serdar_alkan
      var arrayim = {} şeklinde array oluşturabiliyoruz mu? Benim bildiğim 2 yol var

      1. cisi

      var arrayim = new Array('a','b','c') //Array nesnesi oluşturarak

      2. yol da

      var arrayim =['a','b','c']; //Değer atama ile

      Köşeli parantez yerine {} kullanabiliyoruz mu?
      10 yıl önce yazılmış
    • yunusy adlı üyenin fotoğrafı yunusy
      IE8, chrome ve firefoxta denedim olmuyor ne yazık ki. O //trick satırında bir hata var sanırım, o satırdan sonra alert(array_length); yerine alert('asdsad'); yazdığımda da alert çalışmıyor.

      var keys = 0;
      for(var k in arrayim) keys++;

      alert("Toplam: "+keys);
      Şeklinde sayarak bulabiliyoruz ama, direkt sonucu veren birşey varsa daha iyi olur tabiki :)
      10 yıl önce yazılmış
    • fka adlı üyenin fotoğrafı fka
      Array oluşturmuyoruz serdar,

      var arrayim = {}

      veya

      var arrayim = new Object();

      olarak object oluşturuyoruz. Mozilla diyor ki, key-value eşleştirmelerinde array kullanmayın array tek değerlerin yığılımı olarak kullanılır:

      [elma, armut, kiraz]

      gibi

      ama object'i

      {adi: 'namik', soyadi: 'kemal'}

      olarak kullanmalısın diyor.

      @yunusy

      Sen sanırım comment satırını da iki satır olarak aldın komple kod çalışmıyor.

      http://pastebin.com/3Waifpd7

      Buradan alırsan daha doğru olacaktır. Yoksa firefox ve chrome'da çalışıyor.
      10 yıl önce yazılmış
    • yunusy adlı üyenin fotoğrafı yunusy
      Şu son yaptığın yorumdaki açıklama çok iyi oldu. Tekrar teşekkürler.
      Ayrıca İlginç, yine alert vermedi.
      http://pastebin.com/yBMhBQhJ
      :)
      Serdar bir de sen dener misin?
      10 yıl önce yazılmış

Cevaplar

Hiç cevap bulunamadı.