Деструктивно отображать свойства объектов объекта

Я искал пример или решение для сопоставления или изменения значений объекта "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; > )