年末らしく小ネタでも投稿したいと思います。
たとえば以下のようなオブジェクトがあったとして
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
const data = [ { name: 'tanaka taro', address: { country: 'japan', city: 'osaka' } }, { name: 'yamada hikaru', jog: 'nojob', skills: ['muscle', 'engineering', 'driving'] } ] |
このオブジェクトの値をすべてfalseにして複製したいとします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//つまりはこうしたい var dataCopy = [ { name: false, address: { country: false, city: false } }, { name: false, job: false, skills: [ false,false,false ] } ] |
lodashのcloneDeepWithを使ってこうします。
1 2 3 4 5 |
const dataCopy = _.cloneDeepWith(data, function (val) { if (!_.isObject(val)) { return false; } }); |
cloneDeepWithはオブジェクトを複製(名前の通りディープコピー)する際にコールバック関数を指定し、その関数の返り値を値としてオブジェクトを複製します。
この例はfalseを返していますが、return nullやreturn ”とするとすべての値がnullや空文字になります。
ADs
コメントはまだありません。