我是lodash的新手,我想格式化一个对象,有没有办法用lodash函数或其他最佳方式来完成它。
初始对象看起来像这样:
var obj = {
valuesStr:
{ ref_str: [ 'REF' ],
des_str: [ 'DES' ],
desc_str: [ 'DESC' ] },
id: 1
}
生成的对象如下所示:
var result = {
value:
[ { code: 'ref', context: '', value: [ 'REF' ] },
{ code: 'des', context: '', value: [ 'DES' ] },
{ code: 'desc', context: '', value: [ 'DESC' ] } ],
id: 1
}
我试过这个解决方案,但没有给我预期的结果:
var res = {
value: _.map(obj.valuesStr, res => {
return {
code: res.toLowerCase(),
context: '',
value: res,
};
id: obj.id
}
答案 0 :(得分:1)
不需要lodash,使用普通js很容易
var obj = {
valuesStr: {
ref_str: ['REF'],
des_str: ['DES'],
desc_str: ['DESC']
},
id: 1
}
var res = {
value: Object.keys(obj.valuesStr).map(v => ({
code: obj.valuesStr[v][0].toLowerCase(),
context: '',
value: obj.valuesStr[v]
})),
id: obj.id
}
console.log(res);
答案 1 :(得分:0)
您可以使用reduce()
方法创建新对象。
var obj = {
valuesStr: {
ref_str: ['REF'],
des_str: ['DES'],
desc_str: ['DESC']
},
id: 1
}
var result = Object.keys(obj.valuesStr).reduce(function(r, e) {
r.value.push({ code: e.split('_')[0], context: '', value: obj.valuesStr[e] })
return r
}, {value: [], id: obj.id})
console.log(result)