遍历并更改对象中的 属性 个值

Traverse and change property values in object

我想要一个允许三个参数的函数:对象字面量、条件函数、操作函数。

给定以下对象字面量:

var data = {
  'name': 'thomas',
  'date': new Date(),
  'cars': [{
    'name': 'bugati veyron',
    'purchased_at': new Date()
  }]
}

以下条件变量:

function condition (value) {
  return (value instanceof Date)
}

以下操纵函数:

var moment = require('moment')
function manipulate (value){
  return moment(value).format('x')
}

全部放在一起时:

var result = DESIRED_FN(data, condition, manipulate)

结果等于:

{
  'name': 'thomas',
  'date': 1441904309,
  'cars': [{
    'name': 'bugati veyron',
    'purchased_at': 1441904309
  }]
}

lodash 或其他库中是否有具有这种效果的便利函数?

在 lodash 中,您可以轻松创建自己的一个:

_.mixin({'condMod': function(data, condition, manipulate){
        return _.mapValues(data, function(val, b){
            return condition(val)?manipulate(val):val;
        })
    }
});

并这样称呼它:

_.condMod(data, condition, manipulate);