2016-04-14 18 views
1

Bir dizide tanımlanmış değerler aramak için bir nesnenin içinden geçmeye çalışıyorum. Özellikler genellikle bir epoch zaman damgası olanlardır.Lodash nesne özelliklerini arama ve değeri değiştirme

Özellik bulunduğunda, bu özelliklerin değerini insan tarafından okunabilir hale getirmek istiyorum.

may myArray = ["dob", "movingDate"]; 

var myObj = { 
    prop1: "hi", 
    prop2: "goodnight", 
    prop3: "welcome", 
    prop4: "now", 
    name: "Alfred", 
    age: 46, 
    dob: 3165300688, 
    gender: "female", 
    movingDate: 1461233587 
} 

for (var i = 0; i < myArray.length; i++) {  
    var exists = _.has(myObj, myArray[i]); 
} 

Varsa, özellikleri doğru olarak bulur, ancak özellik değerini nasıl alabilirim?

Yukarıdaki Object.Keys notasyonu kullanarak yukarıdaki düzeltmeyi yapabilirim, ancak bunu lodash ve moment ile yapmaya çalışıyorum. Kullandığım olmalı

prop = moment.format('DD-MM-YY HH:mm:ss.SSS'); 

:

_.pick 

Veya:

_.update 

cevap

0

Değilsin ben özelliğine sahip olduktan sonra

, ben üzerinden dönüştürmek anı kullanabilirsiniz Buradaki lodash bile, numaralı in-operator ile mülkün varlığını test etmek için yeterli olabilir:

myArray.forEach(function(value) { 
    if (value in myObj) { 
    myObj[value] = moment.unix(myObj[value]).format('DD-MM-YY HH:mm:ss.SSS'); 
    } 
}); 
1

Sadece bir yöntem anı kullanarak tarih formatına damgası biçimlendirmek için formatDate (veya fav kütüphane herhangi)

1

olduğunu varsayarsak

myArray.forEach(function(val){ 
    if (myObj.hasOwnProperty(val)) 
    { 
    myObj[val] = formatDate(myObj[val]); 
    } 
}); 

yaparak özellik değerini alabilirsiniz böyle bir şey yapabileceğini:

function formatDate(val) { return new Date(val); } 

_.assign({}, myObj, 
    _(myObj) 
    .pick(myArray) 
    .mapValues(formatDate) 
    .value()); 

Not olduğunuçağrısıaslında myObj mutasyona uğratmak yerine yeni bir nesne oluşturacaktır. Bu ilk argüman nedeniyle - {}. myObj referansını değiştirmeniz gerekiyorsa, sadece bu ilk bağımsız değişken kaldırın.

Atanan değer, myArray ve pick() tabanlı değerlerin seçilmesinin sonucudur. Bu bir nesneyi döndürdüğünden, tarihleri ​​biçimlendirmek için mapValues() işlevini kullanmak istiyoruz - formatDate() işlevi herhangi bir şey döndürüyor.

+0

Ölümsüzlük kesinlikle gidilecek yoldur. +1 – Neovea

İlgili konular