以下のような連想配列が2つあり、attendanceの方に名前(name)と日付(date)が合えば、dataの配列のvehicleとstaffのdepを追加したいのですが、
staff.depでは認識されないようなので、どう記述すればいいでしょうか。
後、複数項目追加したいので、target.date==dataN.date && target.name==dataN.name の判定をした上での記述はどうすればいいでしょうか。
angularjsでの違うテーブルのリストを合体させたいという趣旨ですが、いい方法はないでしょうか。
var attendance ={ "obj1":{"date":"2015-01-01","name":"tanaka","出勤":"09:00:00","退勤":"18:00:00"}, "obj2":{"date":"2015-01-01","name":"kimura","出勤":"10:00:00","退勤":"20:00:00"}, "obj3":{"date":"2015-01-02","name":"tanaka","出勤":"09:00:00","退勤":"18:00:00"}, "obj4":{"date":"2015-01-02","name":"kimura","出勤":"10:00:00","退勤":"20:00:00"} }; var data ={ "data1":{"date":"2015-01-01","name":"tanaka","vehicle":"car", "staff":{"id":"01","dep":"sales"}}, "data2":{"date":"2015-01-01","name":"kimura","vehicle":"car", "staff":{"id":"02","dep":"engineer"}}, "data3":{"date":"2015-01-01","name":"noguchi","vehicle":"train","staff":{"id":"03","dep":"bookkeeper"}}, "data4":{"date":"2015-01-01","name":"kikuchi","vehicle":"train", "staff":{"id":"04","dep":"engineer"}}, "data4":{"date":"2015-01-02","name":"tanaka","vehicle":"train", "staff":{"id":"01","dep":"sales"}} }; var attendance_and_vehicle = Object.keys(attendance).reduce( function(dict, key){ var target = attendance[key]; target.vehicle = ( Object.keys(data).map( function(key){ return data[key] } ).filter( function(dataN){ return ( target.date==dataN.date && target.name==dataN.name ) } )[0] || {} ).vehicle; target.staff.dep = ( Object.keys(data).map( function(key){ return data[key] } ).filter( function(dataN){ return ( target.date==dataN.date && target.name==dataN.name ) } )[0] || {} ).staff.dep; dict[key]= target; return dict; },{});
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/23 06:11
2016/06/24 02:03