やりたいことはオブジェクトのマージです。
元々は{name: string, hoge: string, fuga: string, piyo: string}
のオブジェクトの集合があります。
この集合を、元の集合の要素を上書きする要素は{hoge: string}
、追加する要素は{name: string, hoge: string}
という一部のプロパディを持ったオブジェクトの集合で上書きします
これをそのまま上書きすると、追加された要素はfuga
・piyo
プロパティを持たないことになります。
ですので、上書きする前に集合から追加する要素を判定して、fuga
・piyo
を追加します
fuga
はhoge
を引数に取るasync関数によって求められます
JS
1async main = () => { 2 let originalObj = {a: {name: 'a', hoge: 'hoge', fuga: 'fuga', piyo: 'piyo}} 3 4 let mergeObj = {a: {hoge: 'hogehoge'}, b: {name: 'b', hoge: 'hogehoge'}} 5 6 mergeObj = R.map(obj => { 7 if (!('name' in obj)) return obj 8 9 return {fuga: method(obj.hoge), piyo: 'piyo' ...obj} //methodはasync関数 10 }, mergeObj) 11 12 originalObj = R.mergeDeepRight(originalObj, mergeObj} 13}
このようなコードのmap
からassgin
までの所を、RamdaかLodashで短く・なるべく分かりやすくまとめたいです
ramdaを使うのは初めてで、何が何だか全然分からない状態でマジで調べようもないです
助けてくださいお願いします