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

  • BSA

    BSA

    9 NİSAN 2012
  • GWTLecturer

    GWTLecturer

    18 EKİM 2012
  • MovieZoneET

    MovieZoneET

    22 Aralık 2009