SORU
23 Mart 2009, PAZARTESİ


Nasıl javascript bir nesne özelliklerine erişim İ't adlarını bilmiyorum?

Bu gibi: javascript bir nesne olduğunu varsayalım

var data = { Name: 'Property Name', Value: '0' };

Özellik adı tarafından özellikleri erişebilirsiniz:

var name = data.Name;
var value = data["Value"];

Ama eğer özelliklerini adını biliyor musun eğer bu değerleri almak mümkün mü? Bu özelliklerin sırasız doğa imkansız onları ayırmak yapar mı?

Benim durumumda bir işlev ad-değer bir dizi kabul etmesi gereken bir durum özellikle çift düşünüyorum, ama özellikleri adlarını değiştirebilir.

Bu şimdiye kadar nasıl yapılacağı hakkında düşüncelerimi veri ile birlikte işlev özellikleri adlarını geçeceği, ama bu kesmek gibi geliyor. Mümkünse iç gözlem ile bunu yapmayı tercih ederim.

CEVAP
23 Mart 2009, PAZARTESİ


Bu gibi anahtarları döngü

for (var key in data) {
  console.log(key);
}

Bu günlükleri "ve" Değer". Adı

Eğer daha karmaşık bir nesne türü (sadece bir düz çizgi-gibi nesne, özgün soru), istersin sadece döngü anahtarları ait nesnenin kendisini karşıt olarak, anahtarları üzerinde nesnenin prototype:

for (var key in data) {
  if (data.hasOwnProperty(key)) {
    console.log(key);
  }
}

Sizin de belirttiğiniz gibi, anahtarları belirli bir sırada olmasını garanti edilmez. Bu aşağıdaki ne kadar farklı olduğunu not:

for each (var value in data) {
  console.log(value);
}

Bu örnek değerler döngüsü, Property Name 0 günlük. N. B.: for each sözdizimi çoğunlukla Firefox, ama diğer tarayıcılarda desteklenmiyor.

Eğer hedef tarayıcılar ES5, ya da sitenizin yer es5-shim.js (önerilen) desteği de Object.keys kullanabilirsiniz:

var data = { Name: 'Property Name', Value: '0' };
console.log(Object.keys(data)); // => ["Name", "Value"]

ve döngü Array.prototype.forEach ile:

Object.keys(data).forEach(function (key) {
  console.log(data[key]);
});
// => Logs "Property Name", 0

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CHISTOSITOJAJA

    CHISTOSITOJA

    27 HAZİRAN 2010
  • circuschina

    circuschina

    16 Mart 2007
  • karneson

    karneson

    23 Temmuz 2006