Я искал пример или решение для сопоставления или изменения значений объекта "destructively" вместо возврата нового объекта или копии старого объекта. underscore.js может использоваться, поскольку проект уже использует эту стороннюю библиотеку.
Деструктивно отображать свойства объектов объекта
Ответ 1
Вот как могло выглядеть одно такое решение, используя подчеркивание:
function mapValuesDestructive (object, f) {
_.each(object, function(value, key) {
object[key] = f(value);
});
}
пример функции отображения:
function simpleAdder (value) {
return value + 1;
}
и пример использования следующим образом:
var counts = {'first' : 1, 'second' : 2, 'third' : 3};
console.log('counts before: ', counts);
// counts before: Object {first: 1, second: 2, third: 3}
mapValuesDestructive(counts, simpleAdder);
console.log('counts after: ', counts);
//counts after: Object {first: 2, second: 3, third: 4}
рабочая демонстрация: http://jsbin.com/yubahovogi/edit?js,output
(не забудьте открыть консоль/devtools; > )