找到相同的id并将它们存储到一个数组中[重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

我被困在这里我有以下数据。我想要做的是循环到数组并找到具有相同project_id的ite然后获取其日期并仅将它们存储到一个数组对象中。我只能将它们添加到一个数组中,但我遇到的问题是我还从不同的project_id获取其他日期。 :(

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 && !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 && 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 < 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) > Date.parse(cur) ? cur : pre
    })
  }

  function getLatest (array_dates) {
    return array_dates.reduce(function (pre, cur) {
      return Date.parse(pre) < 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) > Date.parse(cur) ? cur : pre
      })
    } else {
      return 0
    }

  }
<body>
<h1>Hello, World!</h1>
<p>Welcome to <strong>Foo</strong>.</p>
</body>

我想要的输出:

[
{
  '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
    }
  ]
}
]
javascript arrays
2个回答
1
投票

这是完整的解决方案。我用Array.prototype.reduce()来组合阵列。

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
  }
]

var result = tasks_data.reduce(function(acc, item) {
  var task = acc.find(function(accItem) {
    return accItem.project_id == item.project_id
  });
  if (task) {
    task.start_dates.push(item.start_date);
  } else {
    acc.push({
      project_id: item.project_id,
      start_dates: [item.start_date]
    })
  }
  return acc;
}, []);
console.log(result);

0
投票

要在数组中查找某个项目,请使用array.find

var searchingFor = 10438883;
var foundItem = tasks_data.find(function (el) {
  return el.id == searchingFor;
});

// do stuff with foundItem
console.log(foundItem.start_date);
© www.soinside.com 2019 - 2024. All rights reserved.