2017-02-20 9 views
-2

私はlodashの新機能です。オブジェクトをフォーマットすることができます.Lodash関数や他の最適な方法で行うことができます。Lodash関数を使用してcomplexeオブジェクトを変換する

初期オブジェクトルック生活この:

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 
     } 
+1

あなたは全体の初期オブジェクト – user93

+1

を置くことができ、あなたは何をしようとしたことがありますか? –

+0

は私が試したソリューションで更新しました – kyserslick

答えて

1

ロダッシュは必要ありません。プレーンな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);

+0

あなたの答えに基づいて私のソリューションの仕事を作ったtkx。私はちょうど位置[0]の要素に指摘するために欠けていた** res [0] .toLowerCase()** – kyserslick

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)

関連する問題