2016-04-10 21 views
-2

Doğru kod. o konsolda yazdırır: oldukça doğrudur
https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSCFJNHQ2k1hvNCD3F9zKp9WiPooSBkjUy-ymynu1T0kmiaW-7r
, tek search_objects öğedir bacaouse.
Döngü için çok garip davranış javascript

  var j; 
     for (j=0;j< search_objects.length; j++){ 
      console.log(j) 
      website = search_objects[j].website; 
      var rand = Math.floor(Math.random()*3) 
      var img_src; 
      switch (rand){ 
       case 0: img_src = "res1.png"; break; 
       case 1: img_src = "res2.png"; break; 
       case 2: img_src = "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSCFJNHQ2k1hvNCD3F9zKp9WiPooSBkjUy-ymynu1T0kmiaW-7r"; break; 
      } 
      console.log(img_src); 
      var template_result = '<div class="owl-item " ..........div>' 

      console.log(search_objects[j].ID_subr) 
      add_carousel_item(template_result) 


     } 

ANCAK ben döngü içinde bir değiştirirseniz Bir kez daha idam edecek. search_objects yalnızca bir öğe olduğunda

 var j; //same thing if i declare like this: for(var j in search_objects) 
     for (j in search_objects){ 
      console.log(j) 
      website = search_objects[j].website; 
      var rand = Math.floor(Math.random()*3) 
      var img_src; 
      switch (rand){ 
       case 0: img_src = "res1.png"; break; 
       case 1: img_src = "res2.png"; break; 
       case 2: img_src = "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSCFJNHQ2k1hvNCD3F9zKp9WiPooSBkjUy-ymynu1T0kmiaW-7r"; break; 
      } 
      console.log(img_src); 
      var template_result = '<div class="owl-item " ..........div>' 

      console.log(search_objects[j].ID_subr) 
      add_carousel_item(template_result) 


     } 

Ve bu ikinci durumda bu döngü 2 defa çalıştırılır ve bu konsola nesneleri kendisi ve uzunluğu yazdırarak kanıtlanmıştır. Bu konsolda gösterilir iken
.
1 // uzunluğu
0 // j
res1.png // math.random gelen img
66 // j ilk öğe
benzersiz // değerinin mülkiyet ??????! !!!!!!!!!!!! Bu zamanların en gerçekleşir: // img
res2.png math.random gelen
tanımlanmamış // [benzersiz] search_objects

Bildirim özelliğini gösteriyor gibi. zamanların% 100'ü değil. Sayfayı yenilendikten sonra yaptığım ilk şey olarak gördüğümde olmaz. Daha önce böyle bir şey gören var mı?

+0

Olası yinelenen (http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript) –

+0

Eh bir 'için kullanmak için hiçbir neden yok .. dizilerdeki ilmek zaten. – Pointy

cevap

0

for...in yalnızca dizi öğelerinin dizinlerini döndürmez, ancak üzerinde yinelenen nesnenin TÜM numaralandırılabilir özelliklerinin adlarını döndürür. Yani unique adlı bir özellik kodunuzda başka bir yere search_objects nesnesine ekleniyor gibi görünüyor. Bu documentation page

Dizi endeksler itibaren

tamsayı adları ile sadece enumerable özellikleridir ve genel nesne özelliklerine aksi aynıdır. Endekslerin belirli bir sırayla geri gönderileceğine dair bir garanti yoktur. Döngü ifadesi için, tamsayı olmayan adlar ve devralınan olanlar dahil olmak üzere tüm sayılabilir özellikleri döndürür. [JavaScript dizi aracılığıyla döngü] arasında