マージしたオブジェクトを生成する

HTML

<ul>
 <li><a href="https://teratail.com/questions/38846">JavaScript - javascript 2つの連想配列で一致箇所追加(38846)|teratail</a></li>
</ul>

JavaScript

'use strict';
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"}},
    "data5":{"date":"2015-01-02","name":"tanaka","vehicle":"train", "staff":{"id":"01","dep":"sales"}}
};

var attendance_and_vehicle = Object.keys(attendance).reduce(function (previous, currentProperty) {
  var currentValue = previous[currentProperty];

  for (var i = 0, keys = Object.keys(data), l = keys.length, date = currentValue.date, name = currentValue.name; i < l; ++i) {
    var value = data[keys[i]];

    if (value.date === date && value.name === name) {
      currentValue.vehicle = value.vehicle;
      currentValue.staff = value.staff;
      return previous;
    }
  }

  return previous;
}, JSON.parse(JSON.stringify(attendance)));


console.log(JSON.stringify(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"}}

console.log(JSON.stringify(attendance_and_vehicle));  //...