javascriptでネストされた連想配列をマージしたいです。
var tmp1= {id : 1 , name : 'なまえ'} ; var tmp2= {id : 2 , tel : 11111} ; var a = { model_name : tmp1 }; var b = { model_name : tmp2 }; console.log( _.extend( a , b ) ); /* こうなってほしい id: 2, name: "なまえ", tel: 11111 } が こうなってしまう id: 2, tel: 11111 } */
_.extend( a['model_name'] , b['model_name']);
とやれば上手く行くのは分かるのですが、子要素を含めてマージしたいのです。
underscoreとjQueryは使用可能です。
a, bが配列である理由は何ですか?tmp1,tmp2がそれぞれに1つずつしか入っていないため、「マージ」後のイメージがつかみにくいです。
_.extend( a[0] , b[0]);ではダメな理由を具体的に示して下さい。
「子要素を含めて」だけでは、曖昧です。
例えば、tmp1,tmp2以外にもtmp3,tmp4があった場合の欲しいマージ結果などを示してみてはどうでしょうか。
質問内容を配列から連想配列に変更しました。
正直、ご指摘の内容を示すのはちょっと難しいです。
実際には本処理はループ文の中身と思っていただき、tmp1及びtmp2に入ってくるネストの深さが一定ではない(ただしtmp1とtmp2のネストのは同じ)なので、子要素ごとにマージするのが面倒なので妙案がないかと思っている次第なのです。
Object.values の中身をマージしたいという事でしょうか。正直、配列の方が処理しやすかったように思います。配列とオブジェクト初期化子では大分処理が異なります。変更前の配列の中身が一つしかないようですけど、実際には複数の値が入っている前提でしょうか。
回答3件
あなたの回答
tips
プレビュー