从javascript中的对象数组获取不同日期(不是时间)的数组

3vpjnl9f  于 2023-01-04  发布在  Java
关注(0)|答案(2)|浏览(183)

嘿,我在reactjs的一个考勤项目工作,我面临着一个问题,我收到了一系列的出勤率,例如(在过去两周的范围内)。所有我需要的是过滤器的不同日期的数组,而不是时间,但只有日期。(时间可以在一个日期不同)

let dates = [
  { id: 51, attendanceTime: "2022-12-26T06:07:02.000Z" },
  { id: 52, attendanceTime: "2022-11-26T06:07:36.000Z" },
  { id: 53, attendanceTime: "2022-10-12T06:28:43.000Z" },
  { id: 54, attendanceTime: "2023-01-01T06:48:53.000Z" },
  { id: 55, attendanceTime: "2022-12-26T06:56:23.000Z" },
];

我已经尝试过的方法,但gettime()比较所有不只是日期,getDate()比较只有天,而不是月和年,所以我需要过滤,使它只区分只有日期(日,月,年)和过滤我的数组的不同数组.我需要的结果像

const result = [
  { id: 51, attendanceTime: "2022-12-26T06:07:02.000Z" },
  { id: 52, attendanceTime: "2022-11-26T06:07:36.000Z" },
  { id: 53, attendanceTime: "2022-10-12T06:28:43.000Z" },
  { id: 54, attendanceTime: "2023-01-01T06:48:53.000Z" },
];

这是distinct日期数组的必需结果

46qrfjad

46qrfjad1#

你可以试试这样的方法:

let dates = [
  {id: 51, attendanceTime: '2022-12-26T06:07:02.000Z'},
  {id: 52, attendanceTime: '2022-11-26T06:07:36.000Z' },
  {id: 53, attendanceTime: '2022-10-12T06:28:43.000Z'},
  {id: 54, attendanceTime: '2023-01-01T06:48:53.000Z'},
  {id: 55, attendanceTime: '2022-12-26T06:56:23.000Z'}
];

let distinct = [];

for(let i = 0; i < dates.length; i++){

  let dateFromDates = dates[i].attendanceTime.split("T");
  let duplicate = distinct.filter(dateFromDistinct => dateFromDistinct == dateFromDates[0]);
  if(duplicate.length == 0){
    distinct.push(dateFromDates[0]);
  }
}

console.log(distinct);
  • 时间复杂度:时间复杂度O(n)
  • 空间复杂性:时间复杂度O(n)

日期格式也必须是您共享格式。

wlsrxk51

wlsrxk512#

可以使用Array.filter()和Array.substring()查找唯一值

let dates = [
      {id: 51, attendanceTime: '2022-12-26T06:07:02.000Z'},
      {id: 52, attendanceTime: '2022-11-26T06:07:36.000Z' },
      {id: 53, attendanceTime: '2022-10-12T06:28:43.000Z'},
      {id: 54, attendanceTime: '2023-01-01T06:48:53.000Z'},
      {id: 55, attendanceTime: '2022-12-26T06:56:23.000Z'}
    ];
let uniqueDate=dates.filter((value,ind,arr)=>arr.findIndex(value2=>(value2.attendanceTime.substring(0, 10)===value.attendanceTime.substring(0, 10)))===ind)

console.log('Original',dates, '\nUnique',uniqueDate)

工作

filter()方法创建一个新的数组,其中的元素通过了函数提供的测试。
语法:dates.filter(function(currentValue, index, arr), thisValue)
substring()方法从字符串中提取两个索引之间的字符,并返回子字符串。
语法:string.substring(start, end)

相关问题