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

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