使用Lodash函数转换complexe对象

时间:2017-02-20 09:47:10

标签: javascript ecmascript-6 lodash

我是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
        }

2 个答案:

答案 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)