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

  • Doug Bernards

    Doug Bernard

    7 Kasım 2007
  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011