title: Find same id and store them into one array
body: <p>I'm stuck here. I have the following data. What I want to do is to loop into the array and find the ite that has same project_id then get its dates and store them into one array object only. I was able to add them into one array only but the problem i'm having is I also get the other dates from the different project_id. :(</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>let tasks_data = [
      {
        'id': 10376401,
        'name': 'closed',
        'notes': null,
        'start_date': '2017-12-23',
        'end_date': '2018-01-07',
        'start_time': null,
        'end_time': null,
        'color': '#f99bd0',
        'color_id': 5,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': null,
        'project': null,
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-13T00:58:16.577+00:00',
        'updated_at': '2017-11-13T00:58:16.577+00:00',
        'deleted_at': null
      },
      {
        'id': 10758760,
        'name': 'water pump has failed and does not turn on at all',
        'notes': null,
        'start_date': '2017-12-19',
        'end_date': '2017-12-19',
        'start_time': null,
        'end_time': null,
        'color': '#8b992c',
        'color_id': 21,
        'estimated_hours': 1,
        'done': true,
        'user_id': 961775,
        'project_id': 1520222,
        'project': {
          'id': 1520222,
          'name': 'DODSON - SO12994',
          'color': '#ddb79b',
          'color_id': 13,
          'client': null,
          'created_at': '2017-12-17T22:25:56.513+00:00',
          'updated_at': '2017-12-17T22:25:56.513+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-12-17T22:25:56.681+00:00',
        'updated_at': '2017-12-17T22:36:24.348+00:00',
        'deleted_at': null
      },
      {
        'id': 10759508,
        'name': 'TEST TASK',
        'notes': null,
        'start_date': '2017-12-21',
        'end_date': '2017-12-21',
        'start_time': null,
        'end_time': null,
        'color': '#8b992c',
        'color_id': 21,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': null,
        'project': null,
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-12-18T02:38:17.344+00:00',
        'updated_at': '2017-12-18T02:38:17.344+00:00',
        'deleted_at': null
      },
      {
        'id': 10438867,
        'name': 'Lance',
        'notes': null,
        'start_date': '2018-01-13',
        'end_date': '2018-01-13',
        'start_time': null,
        'end_time': null,
        'color': '#b83535',
        'color_id': 6,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501266,
        'project': {
          'id': 1501266,
          'name': 'Lance',
          'color': '#b83535',
          'color_id': 6,
          'client': null,
          'created_at': '2017-11-17T03:13:04.198+00:00',
          'updated_at': '2017-11-17T03:13:04.198+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:11:50.478+00:00',
        'updated_at': '2017-11-17T03:13:04.655+00:00',
        'deleted_at': null
      },
      {
        'id': 10438887,
        'name': '',
        'notes': null,
        'start_date': '2018-02-24',
        'end_date': '2018-02-24',
        'start_time': null,
        'end_time': null,
        'color': '#b83535',
        'color_id': 6,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501266,
        'project': {
          'id': 1501266,
          'name': 'Lance',
          'color': '#b83535',
          'color_id': 6,
          'client': null,
          'created_at': '2017-11-17T03:13:04.198+00:00',
          'updated_at': '2017-11-17T03:13:04.198+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:16:00.467+00:00',
        'updated_at': '2017-11-17T03:16:00.467+00:00',
        'deleted_at': null
      },
      {
        'id': 10438871,
        'name': 'Brock',
        'notes': null,
        'start_date': '2018-01-20',
        'end_date': '2018-01-20',
        'start_time': null,
        'end_time': null,
        'color': '#519db0',
        'color_id': 16,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501265,
        'project': {
          'id': 1501265,
          'name': 'Brock',
          'color': '#519db0',
          'color_id': 16,
          'client': null,
          'created_at': '2017-11-17T03:12:40.052+00:00',
          'updated_at': '2017-11-17T03:12:40.052+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:12:44.998+00:00',
        'updated_at': '2017-11-17T03:13:16.430+00:00',
        'deleted_at': null
      },
      {
        'id': 10438868,
        'name': 'Sue',
        'notes': null,
        'start_date': '2017-12-16',
        'end_date': '2017-12-16',
        'start_time': null,
        'end_time': null,
        'color': '#ccaf53',
        'color_id': 36,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': null,
        'project': null,
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:11:54.090+00:00',
        'updated_at': '2017-11-17T03:11:57.094+00:00',
        'deleted_at': null
      },
      {
        'id': 10438878,
        'name': '',
        'notes': null,
        'start_date': '2018-02-03',
        'end_date': '2018-02-03',
        'start_time': null,
        'end_time': null,
        'color': '#b83535',
        'color_id': 6,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501266,
        'project': {
          'id': 1501266,
          'name': 'Lance',
          'color': '#b83535',
          'color_id': 6,
          'client': null,
          'created_at': '2017-11-17T03:13:04.198+00:00',
          'updated_at': '2017-11-17T03:13:04.198+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:15:04.071+00:00',
        'updated_at': '2017-11-17T03:15:04.071+00:00',
        'deleted_at': null
      },
      {
        'id': 10438883,
        'name': '',
        'notes': null,
        'start_date': '2018-02-17',
        'end_date': '2018-02-17',
        'start_time': null,
        'end_time': null,
        'color': '#ccaf53',
        'color_id': 36,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501267,
        'project': {
          'id': 1501267,
          'name': 'sue',
          'color': '#ccaf53',
          'color_id': 36,
          'client': null,
          'created_at': '2017-11-17T03:14:11.459+00:00',
          'updated_at': '2017-11-17T03:14:11.459+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:15:48.055+00:00',
        'updated_at': '2017-11-17T03:15:48.055+00:00',
        'deleted_at': null
      },
      {
        'id': 10438881,
        'name': '',
        'notes': null,
        'start_date': '2018-02-10',
        'end_date': '2018-02-10',
        'start_time': null,
        'end_time': null,
        'color': '#519db0',
        'color_id': 16,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501265,
        'project': {
          'id': 1501265,
          'name': 'Brock',
          'color': '#519db0',
          'color_id': 16,
          'client': null,
          'created_at': '2017-11-17T03:12:40.052+00:00',
          'updated_at': '2017-11-17T03:12:40.052+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:15:40.142+00:00',
        'updated_at': '2017-11-17T03:15:40.142+00:00',
        'deleted_at': null
      },
      {
        'id': 10438875,
        'name': 'Sue',
        'notes': null,
        'start_date': '2018-01-27',
        'end_date': '2018-01-27',
        'start_time': null,
        'end_time': null,
        'color': '#ccaf53',
        'color_id': 36,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501267,
        'project': {
          'id': 1501267,
          'name': 'sue',
          'color': '#ccaf53',
          'color_id': 36,
          'client': null,
          'created_at': '2017-11-17T03:14:11.459+00:00',
          'updated_at': '2017-11-17T03:14:11.459+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:14:11.903+00:00',
        'updated_at': '2017-11-17T03:14:50.363+00:00',
        'deleted_at': null
      },
      {
        'id': 10438892,
        'name': '',
        'notes': null,
        'start_date': '2018-03-10',
        'end_date': '2018-03-10',
        'start_time': null,
        'end_time': null,
        'color': '#ccaf53',
        'color_id': 36,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501267,
        'project': {
          'id': 1501267,
          'name': 'sue',
          'color': '#ccaf53',
          'color_id': 36,
          'client': null,
          'created_at': '2017-11-17T03:14:11.459+00:00',
          'updated_at': '2017-11-17T03:14:11.459+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:16:19.459+00:00',
        'updated_at': '2017-11-17T03:16:19.459+00:00',
        'deleted_at': null
      },
      {
        'id': 10438889,
        'name': '',
        'notes': null,
        'start_date': '2018-03-03',
        'end_date': '2018-03-03',
        'start_time': null,
        'end_time': null,
        'color': '#519db0',
        'color_id': 16,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1501265,
        'project': {
          'id': 1501265,
          'name': 'Brock',
          'color': '#519db0',
          'color_id': 16,
          'client': null,
          'created_at': '2017-11-17T03:12:40.052+00:00',
          'updated_at': '2017-11-17T03:12:40.052+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-17T03:16:10.400+00:00',
        'updated_at': '2017-11-17T03:16:10.400+00:00',
        'deleted_at': null
      },
      {
        'id': 10791020,
        'name': 'having issues with jobs we done',
        'notes': null,
        'start_date': '2017-12-21',
        'end_date': '2017-12-21',
        'start_time': null,
        'end_time': null,
        'color': '#8b992c',
        'color_id': 21,
        'estimated_hours': 2,
        'done': false,
        'user_id': 961775,
        'project_id': 1522095,
        'project': {
          'id': 1522095,
          'name': 'Linsket - SO13017',
          'color': '#caeddf',
          'color_id': 34,
          'client': null,
          'created_at': '2017-12-19T22:47:11.753+00:00',
          'updated_at': '2017-12-19T22:47:11.753+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-12-19T22:47:11.926+00:00',
        'updated_at': '2017-12-19T22:47:11.926+00:00',
        'deleted_at': null
      },
      {
        'id': 10563125,
        'name': 'Engineer Inspection',
        'notes': null,
        'start_date': '2017-12-20',
        'end_date': '2017-12-20',
        'start_time': null,
        'end_time': null,
        'color': '#a58eed',
        'color_id': 2,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': 1508140,
        'project': {
          'id': 1508140,
          'name': 'BLACK - SO12858',
          'color': '#8b992c',
          'color_id': 21,
          'client': null,
          'created_at': '2017-11-29T02:12:42.852+00:00',
          'updated_at': '2017-11-29T02:12:42.852+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-29T02:15:20.116+00:00',
        'updated_at': '2017-11-29T02:15:20.116+00:00',
        'deleted_at': null
      },
      {
        'id': 10641501,
        'name': 'closing at 12:00',
        'notes': null,
        'start_date': '2017-12-15',
        'end_date': '2017-12-15',
        'start_time': null,
        'end_time': null,
        'color': '#9ee8fa',
        'color_id': 17,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': null,
        'project': null,
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-12-06T00:54:27.293+00:00',
        'updated_at': '2017-12-06T00:54:29.518+00:00',
        'deleted_at': null
      },
      {
        'id': 10701968,
        'name': 'HEIGHTS TRAINING WORKSHOP ALL DAY',
        'notes': null,
        'start_date': '2018-01-17',
        'end_date': '2018-01-17',
        'start_time': null,
        'end_time': null,
        'color': '#e5c972',
        'color_id': 37,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': null,
        'project': null,
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-12-12T06:39:48.777+00:00',
        'updated_at': '2017-12-12T06:39:48.777+00:00',
        'deleted_at': null
      },
      {
        'id': 10701956,
        'name': 'Ray booked for Gas cert AM',
        'notes': null,
        'start_date': '2017-12-13',
        'end_date': '2017-12-13',
        'start_time': null,
        'end_time': null,
        'color': '#cdcdcd',
        'color_id': 35,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': null,
        'project': null,
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-12-12T06:38:32.737+00:00',
        'updated_at': '2017-12-12T06:38:32.737+00:00',
        'deleted_at': null
      },
      {
        'id': 10715410,
        'name': 'air con repair. Showing error code e5. Air command ibis. 7 yr old.',
        'notes': null,
        'start_date': '2018-01-16',
        'end_date': '2018-01-16',
        'start_time': null,
        'end_time': null,
        'color': '#8b992c',
        'color_id': 21,
        'estimated_hours': 1,
        'done': false,
        'user_id': 961775,
        'project_id': 1517289,
        'project': {
          'id': 1517289,
          'name': 'EASTON - SO12969',
          'color': '#dedede',
          'color_id': 40,
          'client': null,
          'created_at': '2017-12-13T02:21:12.493+00:00',
          'updated_at': '2017-12-13T02:21:12.493+00:00'
        },
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-12-13T02:21:12.677+00:00',
        'updated_at': '2017-12-13T04:06:32.797+00:00',
        'deleted_at': null
      }
    ]
  
    /*
    let tasks_data = [
      {
        'id': 10376401,
        'name': 'closed',
        'notes': null,
        'start_date': '2017-12-23',
        'end_date': '2018-01-07',
        'start_time': null,
        'end_time': null,
        'color': '#f99bd0',
        'color_id': 5,
        'estimated_hours': 0,
        'done': false,
        'user_id': 961775,
        'project_id': null,
        'project': null,
        'folder_id': null,
        'weight': 0,
        'created_at': '2017-11-13T00:58:16.577+00:00',
        'updated_at': '2017-11-13T00:58:16.577+00:00',
        'deleted_at': null
      },
      {
        "id": 10438883,
        "name": "",
        "notes": null,
        "start_date": "2018-02-17",
        "end_date": "2018-02-17",
        "start_time": null,
        "end_time": null,
        "color": "#ccaf53",
        "color_id": 36,
        "estimated_hours": 0,
        "done": false,
        "user_id": 961775,
        "project_id": 1501267,
        "project": {
          "id": 1501267,
          "name": "sue",
          "color": "#ccaf53",
          "color_id": 36,
          "client": null,
          "created_at": "2017-11-17T03:14:11.459+00:00",
          "updated_at": "2017-11-17T03:14:11.459+00:00"
        },
        "folder_id": null,
        "weight": 0,
        "created_at": "2017-11-17T03:15:48.055+00:00",
        "updated_at": "2017-11-17T03:15:48.055+00:00",
        "deleted_at": null
      },
      {
        "id": 10438875,
        "name": "Sue",
        "notes": null,
        "start_date": "2018-01-27",
        "end_date": "2018-01-27",
        "start_time": null,
        "end_time": null,
        "color": "#ccaf53",
        "color_id": 36,
        "estimated_hours": 0,
        "done": false,
        "user_id": 961775,
        "project_id": 1501267,
        "project": {
          "id": 1501267,
          "name": "sue",
          "color": "#ccaf53",
          "color_id": 36,
          "client": null,
          "created_at": "2017-11-17T03:14:11.459+00:00",
          "updated_at": "2017-11-17T03:14:11.459+00:00"
        },
        "folder_id": null,
        "weight": 0,
        "created_at": "2017-11-17T03:14:11.903+00:00",
        "updated_at": "2017-11-17T03:14:50.363+00:00",
        "deleted_at": null
      },
      {
        "id": 10438892,
        "name": "",
        "notes": null,
        "start_date": "2018-03-10",
        "end_date": "2018-03-10",
        "start_time": null,
        "end_time": null,
        "color": "#ccaf53",
        "color_id": 36,
        "estimated_hours": 0,
        "done": false,
        "user_id": 961775,
        "project_id": 1501267,
        "project": {
          "id": 1501267,
          "name": "sue",
          "color": "#ccaf53",
          "color_id": 36,
          "client": null,
          "created_at": "2017-11-17T03:14:11.459+00:00",
          "updated_at": "2017-11-17T03:14:11.459+00:00"
        },
        "folder_id": null,
        "weight": 0,
        "created_at": "2017-11-17T03:16:19.459+00:00",
        "updated_at": "2017-11-17T03:16:19.459+00:00",
        "deleted_at": null
      }
    ]
    */
    /*
      let tasks_data = [
        {
          'id': 10376401,
          'name': 'closed',
          'notes': null,
          'start_date': '2017-12-23',
          'end_date': '2018-01-07',
          'start_time': null,
          'end_time': null,
          'color': '#f99bd0',
          'color_id': 5,
          'estimated_hours': 0,
          'done': false,
          'user_id': 961775,
          'project_id': null,
          'project': null,
          'folder_id': null,
          'weight': 0,
          'created_at': '2017-11-13T00:58:16.577+00:00',
          'updated_at': '2017-11-13T00:58:16.577+00:00',
          'deleted_at': null
        },
        {
          'id': 10438883,
          'name': '',
          'notes': null,
          'start_date': '2018-02-17',
          'end_date': '2018-02-17',
          'start_time': null,
          'end_time': null,
          'color': '#ccaf53',
          'color_id': 36,
          'estimated_hours': 0,
          'done': false,
          'user_id': 961775,
          'project_id': 1501267,
          'project': {
            'id': 1501267,
            'name': 'sue',
            'color': '#ccaf53',
            'color_id': 36,
            'client': null,
            'created_at': '2017-11-17T03:14:11.459+00:00',
            'updated_at': '2017-11-17T03:14:11.459+00:00'
          },
          'folder_id': null,
          'weight': 0,
          'created_at': '2017-11-17T03:15:48.055+00:00',
          'updated_at': '2017-11-17T03:15:48.055+00:00',
          'deleted_at': null
        },
        {
          'id': 10438875,
          'name': 'Sue',
          'notes': null,
          'start_date': '2018-01-27',
          'end_date': '2018-01-27',
          'start_time': null,
          'end_time': null,
          'color': '#ccaf53',
          'color_id': 36,
          'estimated_hours': 0,
          'done': false,
          'user_id': 961775,
          'project_id': 1501267,
          'project': {
            'id': 1501267,
            'name': 'sue',
            'color': '#ccaf53',
            'color_id': 36,
            'client': null,
            'created_at': '2017-11-17T03:14:11.459+00:00',
            'updated_at': '2017-11-17T03:14:11.459+00:00'
          },
          'folder_id': null,
          'weight': 0,
          'created_at': '2017-11-17T03:14:11.903+00:00',
          'updated_at': '2017-11-17T03:14:50.363+00:00',
          'deleted_at': null
        }
      ]
    */
    var start_dates = new Array()
    var end_dates = new Array()
  
    var result = tasks_data.reduce(function (acc, item) {
      var task = acc.find(function (accItem) {
        return accItem.project_id === item.project_id
      })
      if (task &amp;&amp; !Array.isArray(task.schedule)) {
        task.schedule = [task.schedule].concat({
          project_id: item.project_id,
          start_date: item.start_date,
          end_date: item.end_date,
          daily_estimate: item.estimated_hours,
        })
        task.start_dates.push(item.start_date)
        task.end_dates.push(item.end_date)
        task.next_start_dates.push(item.start_date)
      } else if (task &amp;&amp; Array.isArray(task.schedule)) {
        task.schedule.push({
          project_id: item.project_id,
          start_date: item.start_date,
          end_date: item.end_date,
          daily_estimate: item.estimated_hours,
        })
        task.start_dates.push(item.start_date)
        task.end_dates.push(item.end_date)
        task.next_start_dates.push(item.start_date)
      } else {
        acc.push({
          project_id: item.project_id, //(item.project_id === null) ? 'Missing_project_id' : item.project_id,
          schedule: [{
            project_id: item.project_id, //(item.project_id === null) ? 'Missing_project_id' : item.project_id,
            start_date: item.start_date,
            end_date: item.end_date,
            daily_estimate: item.estimated_hours,
          }],
          start_dates: [item.start_date],
          end_dates: [item.end_date],
          next_start_dates: [item.start_date],
        })
      }
  
      return acc
    }, [])
  
    //console.log(result)
  
    var final_result = tasksv2(result)
    console.log(final_result)
  
    function tasksv2 (data) {
      for (var i = 0; i &lt; data.length; i++) {
        data[i].earliest = getEarliest(data[i].start_dates)
        data[i].latest = getLatest(data[i].end_dates)
        data[i].next_start = getNextStart(data[i].start_dates, data[i].earliest)
      }
  
      return data
    }
  
    function getUniqueDatesOnly (a) {
      return Array.from(new Set(a))
    }
  
    function getEarliest (array_dates) {
      return array_dates.reduce(function (pre, cur) {
        return Date.parse(pre) &gt; Date.parse(cur) ? cur : pre
      })
    }
  
    function getLatest (array_dates) {
      return array_dates.reduce(function (pre, cur) {
        return Date.parse(pre) &lt; Date.parse(cur) ? cur : pre
      })
    }
  
    function getNextStart (array_dates, earliest_index) {
      var index = array_dates.indexOf(earliest_index)
      // if array_dates has only 1 value dont splice
      if (array_dates.length === 1) {
          return array_dates[0];
      }
  
      if (index !== -1) {
        array_dates.splice(index, 1)
        return array_dates.reduce(function (pre, cur) {
          return Date.parse(pre) &gt; Date.parse(cur) ? cur : pre
        })
      } else {
        return 0
      }
  
    }</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;body&gt;
  &lt;h1&gt;Hello, World!&lt;/h1&gt;
  &lt;p&gt;Welcome to &lt;strong&gt;Foo&lt;/strong&gt;.&lt;/p&gt;
  &lt;/body&gt;</code></pre>
  </div>
  </div>
  </p>
  
  <p>Output that I would like:</p>
  
  <pre><code>[
  {
    'project_id': 1501267,
    'schedule': [
      {
        start_data: '2018-02-17', end_data: '2018-02-17', daily_estimate: 0
      },
      {
        start_data: '2018-01-27', end_data: '2018-01-27', daily_estimate: 0
      }
    ]
  },
  {
    'project_id': null,
    'schedule': [
      {
        start_data: "2017-12-23", end_data: "2018-01-07", daily_estimate: 0
      }
    ]
  }
  ]
  </code></pre>