遍历并更改对象中的 属性 个值
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);
我想要一个允许三个参数的函数:对象字面量、条件函数、操作函数。
给定以下对象字面量:
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);