以下のような連想配列が2つあり、attendanceの方に名前nameのfirst と日付(date)が合えば、
dataの配列のvehicleとstaffのdepを追加する処理を記述しています。
しかし2点問題があります。
1)staffがnullの場合staff.depと記述すると以下のエラーが表示されてしまいます。
TypeError: Cannot read property 'dept' of null
なので以下のように記述しましたが、「injectData.indexOf is not a function」とエラーになってしまいます。
if (injectData){ if (injectData.indexOf(injectData.mdItemDto.name) == -1){ target.mdItemDto = { mdItemDto: injectData.mdItemDto}; }else{ target.mdItemDto = { name: injectData.mdItemDto.name }; }
2)2つの配列で一致すれば追加という処理でnameのfirst が認識されません。
function(dataN){ return ( target.date==dataN.date && target.name.first==dataN.name.fist ) }
上記2つの問題に関してご教示お願いいたします。
var attendance ={ "obj1":{"date":"2015-01-01","name":{"first":"fist1","last":"last1"},"出勤":"09:00:00","退勤":"18:00:00"}, "obj2":{"date":"2015-01-01","name":{"first":"fist2","last":"last2"},"出勤":"10:00:00","退勤":"20:00:00"}, "obj3":{"date":"2015-01-02","name":{"first":"fist6","last":"last6"},"出勤":"09:00:00","退勤":"18:00:00"}, "obj4":{"date":"2015-01-02","name":{"first":"fist7","last":"last7"},"出勤":"10:00:00","退勤":"20:00:00"} }; var data ={ "data1":{"date":"2015-01-01","name":{"first":"fist1","last":"last1"},"vehicle":"car", "staff":{"id":"01","dep":"sales"}}, "data2":{"date":"2015-01-01","name":{"first":"fist2","last":"last2"},"vehicle":"car", "staff":{"id":"02","dep":"engineer"}}, "data3":{"date":"2015-01-01","name":{"first":"fist3","last":"last3"},"vehicle":"train","staff":{"id":"03","dep":"bookkeeper"}}, "data4":{"date":"2015-01-01","name":{"first":"fist4","last":"last4"},"vehicle":"train", "staff":{"id":"04","dep":"engineer"}}, "data5":{"date":"2015-01-02","name":{"first":"fist5","last":"last5"},"vehicle":"train", "staff":{"id":"01","dep":"sales"}} }; var attendance_and_vehicle = Object.keys(attendance).reduce( function(dict, key){ var target = attendance[key]; var injectData = Object.keys(data).map( function(key){ return data[key] //document . write("data[key]: "data[key] +"<br>" ); } ).filter( function(dataN){ return ( target.date==dataN.date && target.name.first==dataN.name.fist ) } )[0] if (injectData){ target.vehicle = injectData.vehicle; target.staff = { dept: injectData.staff.dep }; } else { target.vehicle = undefined; target.staff = { dept: undefined }; } dict[key]= target; return dict; },{});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。