Immutable.js型だったら、imtRecord.setIn(['a', 'b', 'c'], 'd');
のようにシンプル書けるが、純粋なJavaScriptオブジェクトなら、当然できない。
自分で頑張って描くなら、次のような感じだと思う。
- obj.aがあったら、その中にbを設定する
- obj.bがなかったら、まずobj.bに空オブジェクトを設置してから、bを中に設定する
- c以降も同様のロジックで繰り返す
便利そうなライブラリない?
何処でもいつでもこんなロジックが発生するから、ないとおかしい。
set-valueというライブライはgithubにある。
set-valueの使い方
npm install set-value
// hoge.js
import set from 'set-value';
const obj = {};
set(obj, 'a.b.c', 'd');
console.log(obj);
// output: { a: { b: { c: 'd' } } }