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

  • AndroidSale

    AndroidSale

    17 NİSAN 2011
  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • LiteralMSPaint

    LiteralMSPai

    27 EKİM 2010