SORU
11 ŞUBAT 2013, PAZARTESİ


nesneleri göster (dizi yerine)

Bir nesne var:

myObject = { 'a': 1, 'b': 2, 'c': 3 }

Doğal bir yöntem, aşağıdaki gibidir: kullanılan Array.prototype.map benzer arıyorum

newObject = myObject.map(function (value, label) {
    return value * value;
});

// newObject is now { 'a': 1, 'b': 4, 'c': 9 }

JavaScript nesneleri map böyle bir işlevi var mı? (Node.JS yani çapraz tarayıcı sorunları hakkında umurumda değil bunu istiyorum.)

CEVAP
11 ŞUBAT 2013, PAZARTESİ


Yerli Object nesne map yok, ama buna ne demeli

Object.keys(myObject).map(function(value, index) {
   myObject[value] *= 2;
});

console.log(myObject);

// => { 'a': 2, 'b': 4, 'c': 6 }

Ama kolayca bir nesne for ... in kullanarak üzerinde yineleme.

for(var key in myObject) {
    if(myObject.hasOwnProperty(key)) {
        myObject[key] *= 2;
    }
}

Güncelleme

Bir çok insan önceki yöntemler yeni bir nesne döndüren bir söz vardır, ancak bunun yerine bir nesne üzerinde işlem kendisi. Bu konuda olduğu gibi yeni bir nesne döndürür ve özgün nesne bırakan başka bir çözüm eklemek istedim:

var newObject = Object.keys(myObject).reduce(function(previous, current) {
    previous[current] = myObject[current] * myObject[current];
    return previous;
}, {});

console.log(newObject);
// => { 'a': 1, 'b': 4, 'c': 9 }

console.log(myObject);
// => { 'a': 1, 'b': 2, 'c': 3 }

Array.prototype.reduce akıntıyla biraz önceki değerini birleştirerek tek bir değer için bir dizi azaltır. Zinciri boş bir nesne {} tarafından başlatıldı. Her yineleme üzerinde myObject yeni bir anahtar olarak değer yerlere eklenir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • Tianna Sierra Dance

    Tianna Sierr

    16 EYLÜL 2013