破坏性地映射对象属性函数

时间:2015-06-17 14:09:20

标签: javascript object functional-programming underscore.js

我正在寻找一个示例或解决方案,用于映射或更改对象的值,并且“破坏性地”#39;而不是返回旧对象的新对象或副本。可以使用underscore.js,因为该项目已经使用了这个第三方库。

1 个答案:

答案 0 :(得分:2)

使用下划线,这就是一个这样的解决方案的样子:

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;>)