javascript-使用lodash将函数应用于对象的过滤属性

我想使用lodash选择性地改变对象的属性.

var foo = { 'a': 1, 'b': 2, 'c': 3 };

function addOne(num) {
    return num + 1;
}

var propsToTransform = ['a', 'b'];

_(foo).pick(propsToTransfrom)
  .map(addOne);

// I want foo = { 'a': 2, 'b':3, 'c':3 }

是否可以使用我上面概述的构图类型来实现这一目标,或者我应该坚持使用类似的方法

_.forEach(propsToTransform, (prop) => {
  if (foo[prop]) {
    foo[prop] = addOne(foo[prop]);
  }
});

解决方法:

您正在寻找andlrc指出的_.mapValues_.protoype.value.您将最终使用新值创建一个新对象,并将其与原始对象合并:

var foo = { 'a': 1, 'b': 2, 'c': 3 };
var propsToTransfrom = ['a', 'b']

// Create a new object with the new, modified values and merge it onto the original one
var bar = _.merge(foo, _(foo).pick(propsToTransfrom).mapValues(addOne).value());

console.log(bar); // { 'a': 2, 'b': 3, 'c': 3 }

function addOne(num) {
    return num + 1;
}
上一篇:前端-使用template-web.js【模版引擎】渲染数据


下一篇:javascript-映射对象数组并且仅采用唯一