Подтвердить что ты не робот

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

Я искал пример или решение для сопоставления или изменения значений объекта "destructively" вместо возврата нового объекта или копии старого объекта. underscore.js может использоваться, поскольку проект уже использует эту стороннюю библиотеку.

4b9b3361

Ответ 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; > )