Doğru Cevap
-
Etkilemez.
alert([undefined, undefined].length); //2 verir.
-
yunusy
Hocam etkilemez derken hangisini kastettiğini anlayamadım:) Array şimdi 6 birimlik mi oldu yoksa 234 birimlik mi .12 yıl önce yazılmış -
fka
6 birimlik yer kaplar :)12 yıl önce yazılmış -
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 :)12 yıl önce yazılmış -
fka
Bunu araştırmamız lazım :)12 yıl önce yazılmış -
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.12 yıl önce yazılmış -
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 :)12 yıl önce yazılmış -
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ıma12 yıl önce yazılmış -
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 :)12 yıl önce yazılmış -
fka
var array_length = keys(arrayim).length;
yapınca da mı vermiyor? Browser farklılığı olabilir mi acaba?12 yıl önce yazılmış -
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?12 yıl önce yazılmış -
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 :)12 yıl önce yazılmış -
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.12 yıl önce yazılmış -
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?12 yıl önce yazılmış
-
Cevaplar
Hiç cevap bulunamadı.