#lodash
#Lodash
Вопрос:
У меня есть объект, подобный:
{
home: 78,
draw: 81,
away: 36,
u0_5: 16,
o0_5: 26,
u1_5: 10,
o1_5: 68,
u2_5: 48,
o2_5: 50,
u3_5: 29,
o3_5: 31,
u4_5: 50,
o4_5: 5,
u5_5: 68,
o5_5: 56
}
моя цель — получить новый объект с такой же структурой, но с каждым значением, умноженным на 100, и получить ту же структуру.
{
home: 7800,
draw: 8100,
away: 3600,
...
}
Ответ №1:
Вы можете использовать mapValues() для решения этой проблемы вместе с обратным вызовом для преобразования каждого значения.
const result = _.mapValues(data, v => v * 100);
const data = {
home: 78,
draw: 81,
away: 36,
u0_5: 16,
o0_5: 26,
u1_5: 10,
o1_5: 68,
u2_5: 48,
o2_5: 50,
u3_5: 29,
o3_5: 31,
u4_5: 50,
o4_5: 5,
u5_5: 68,
o5_5: 56
};
const result = _.mapValues(data, v => v * 100);
console.log(result);
.as-console-wrapper{min-height:100%;top:0!important}
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
Ответ №2:
С помощью Lodash /fp вы можете создать функцию с помощью _.mapValues()
и _.multiply()
, которая выполняет итерацию объекта и умножает каждое значение на 100:
const fn = _.mapValues(_.multiply(100))
const obj = {"home":78,"draw":81,"away":36,"u0_5":16,"o0_5":26,"u1_5":10,"o1_5":68,"u2_5":48,"o2_5":50,"u3_5":29,"o3_5":31,"u4_5":50,"o4_5":5,"u5_5":68,"o5_5":56}
const result = fn(obj)
console.log(result)
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js lodash.fp.min.js)'></script>
Ответ №3:
_.forEach(data, function(value, key) {
data.key = value*100;
});
Комментарии:
1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и почему он решает проблему, улучшило бы долгосрочную ценность ответа.