SORU
14 EYLÜL 2013, CUMARTESİ


İlişkisel dizi Javascript foreach döngü nesne

Neden benim için-her döngü JavaScript ilişkisel dizi benim nesne üzerinden yineleme değil mi?

// defining an array
var array = [];

// assigning values to corresponding keys
array["Main"] = "Main page";
array["Guide"] = "Guide page";
array["Articles"] = "Articles page";
array["Forum"] = "Forum board";

// expected: loop over every item,
// yet it logs only "last" assigned value - "Forum"
for (var i = 0; i < array.length; i  ) {
    console.log(i);
}

EDİT: each() yararlı olabilir jQuery: https://api.jquery.com/jQuery.each/

CEVAP
14 EYLÜL 2013, CUMARTESİ


.length Bu özellik yalnızca sayısal indeksler (anahtar) ile özellikleri izler. Anahtarları dizeleri için kullanıyorsun.

Bunu yapabilirsiniz:

var arr_jq_TabContents = {}; // no need for an array

arr_jq_TabContents["Main"] = jq_TabContents_Mian;
arr_jq_TabContents["Guide"] = jq_TabContents_Guide;
arr_jq_TabContents["Articles"] = jq_TabContents_Articles;
arr_jq_TabContents["Forum"] = jq_TabContents_Forum;

for (var key in arr_jq_TabContents) {
    console.log(arr_jq_TabContents[key]);
}

Güvenli olması için, bu özelliklerin hiçbiri miras beklenmeyen sonuçlar olduğundan emin olmak gibi döngülerde iyi bir fikir:

for (var key in arr_jq_TabContents) {
  if (arr_jq_TabContents.hasOwnProperty(key))
    console.log(arr_jq_TabContents[key]);
}

edit&; muhtemelen şimdi Object.keys() işlevi modern tarayıcılarda kullanılabilir ve Düğüm vb dikkat etmek iyi bir fikirdir -. Bu işlevi, "kendi", bir dizi olarak: bir nesnenin anahtarları

Object.keys(arr_jq_TabContents).forEach(function(key, index) {
  console.log(this[key]);
}, arr_jq_TabContents);

Geri arama işlevi .forEach() geçti dizi Object.keys() tarafından döndürülen her bir kilit ve anahtar dizini olarak adlandırılır. Aynı zamanda, işlevini yineleme, ama bu dizi bizim için çok yararlı değil dizi geçti; orijinal ihtiyacımız varnesne. Bu erişilebilir doğrudan ismen, ama (bence) biraz daha iyi pas açıkça, yapılan geçici bir ikinci tartışma .forEach() - orijinal nesne-çıkar bağlı olarak this içinde geri. (Sadece bu yorum altında not olduğunu gördü.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • SRI International

    SRI Internat

    30 NİSAN 2008