SORU
27 Mart 2009, Cuma


Nesneleri vs anahtar/değer çiftleri için Javascript diziler

Çok basit bir veri yapısı vardır:

(personId, name)

...ve javascript bir değişkeni bu bir dizi depolamak istediğiniz. Bence üç seçeneğiniz vardır:

// a single object
var people = {
    1 : 'Joe',
    3 : 'Sam',
    8 : 'Eve'
};

// or, an array of objects
var people = [
    { id: 1, name: 'Joe'},
    { id: 3, name: 'Sam'},
    { id: 8, name: 'Eve'}
];

// or, a combination of the two
var people = {
    1 : { id: 1, name: 'Joe'},
    3 : { id: 3, name: 'Sam'},
    8 : { id: 8, name: 'Eve'}
};

İkinci ya da üçüncü seçenek belli ki yolu varsa (veya beklediğiniz olabilir) birden fazla "değer" kısmına deposu (örneğin, ekleme, yaşlarına falan), yani, hatırım için, farz edelim ki hiç olacak daha fazla veri değerleri için gerekli bu yapı. Hangisini ve neden tercih ediyorsun?

< / ^ hr .

Edit: Bu örnek, şimdi en yaygın durum gösterir: sıralı olmayan kimlikleri.

CEVAP
27 Mart 2009, Cuma


Her bir çözüm kullanmak onun davaları var.

Bence ilk çözüm, iyi çalışıyorsan tanımlamak için bire-bir ilişki (gibi bir basit eşleme), özellikle de kullanman gerekiyorsa anahtar olarak bir arama anahtarı.

İkinci çözüm genel olarak bana en sağlam hissediyorum, ve muhtemelen hızlı arama tuşuna ihtiyacım olsa kullanırdım:

  • Değilsin bu yüzden kendini anlatan, kullanan herkes bağımlı insanlaranahtarı kullanıcı kimliği olduğunu biliyoruz.
  • Her nesne kendi kendine yeten,geliyor hangi veri iletimi için daha iyi olur başka bir yerde - iki parametre yerine (kimliği ve Adı) etrafında geçmek sadece insanlar.
  • Bu nadir bir sorun olduğunu, ama bazen anahtar değerleri için geçerli olmayabilir anahtar olarak kullanın. Örneğin, ben bir kez göster dize dönüşüm istedi (örneğin, ":"">"), ama beri ":" zorunda kaldım, geçerli bir değişken adı değildir ikinci yöntemi kullanın.
  • Durumunda kolayca genişletilebilir. bir yere hat boyunca gerek (ya da tüm) bazı kullanıcılar için daha fazla veri ekleyin. (Özür dilerim, biliyorum senin için " argüman" ama bu bir iyiliği var önemli bir yönü.)

Üçüncüsü ise hızlı arama zaman avantajları yukarıda listelenen (veri geçirmeden, kendi kendini açıklayan) bir ihtiyacın olursa iyi olur. Eğer hızlı arama zaman ihtiyacın olursa. ancak, çok daha hantal. Ayrıca, her iki şekilde de, eğer nesne kimliği bir şekilde id farklıysa hata riskiyle karşılaşırsınızinsanlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Atlantic Records

    Atlantic Rec

    15 Aralık 2006
  • Sam Kear

    Sam Kear

    14 Temmuz 2007
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009