簡體   English   中英

從 javascript 中的對象數組中獲取不同日期(不是時間)的數組

[英]Get array of distinct date(not time) from array of objects in javascript

嘿,我正在 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" },
];

這是不同日期數組的必需結果

你可以嘗試這樣的事情:

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^2)
  • 空間復雜度:O(n)

此外,日期格式必須采用您共享的格式。

您可以使用 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() 方法使用通過 function 提供的測試的元素創建新數組。

語法: dates.filter(function(currentValue, index, arr), thisValue)

substring() 方法從字符串中提取兩個索引之間的字符,並返回 substring。

語法: string.substring(start, end)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM