簡體   English   中英

Javascript 對象數組排序

[英]Javascript Array of Objects Sort

這是我的陣列。 我正在嘗試使用日期值對其進行排序。

var dates = [{date: Sat Mar 06 2021}, {date: Fri Mar 05 2021}, {date:Sun Mar 07 2021}]

我已經嘗試過了,但它不適合我

let sortedDates = dates.sort((a, b) => new Date(...a.date.split('/').reverse()) - new Date(...b.date.split('/').reverse()));

 const activities = [{date: 'Sat Mar 06 2021'}, {date: 'Fri Mar 05 2021'}, {date:'Sun Mar 07 2021'}] const sortedActivities = activities.sort((a, b) => new Date(a.date) - new Date(b.date)); console.log(sortedActivities);

你可以試試這個。 它會為你工作。

你做錯了幾件事。 首先,數組中的“日期”會使您的代碼崩潰,因為它們應該是字符串。 然后你試圖用/分割它,但沒有這樣的字符。 您想用空格分隔它們。 理想情況下,您應該始終以機器可讀格式保存數據 - unix 時間(以毫秒為單位)、符合 IETF 的 RFC 2822 時間戳或 ISO 8601(它們在 JS 中可能具有不同的效果,因此請閱讀Date )。

至於你現在的情況,總體來說你的想法是對的,但是你的執行是錯誤的。 首先你想用空格分割你的字符串: let arr = date.split(' ') 然后你想將它分成幾部分,然后以Date.parse function 可以理解的方式組裝所述部分:

let [dayOfWeek, month, day, year] = date.split(" ");
let dateInMilliseconds = Date.parse(`${day} ${month} ${year}`);

現在你可以比較你的日期了。

把它們放在一起,你會得到這個:

function parseDate(date) {
  let [dayOfWeek, month, day, year] = date.split(" ");
  return Date.parse(`${day} ${month} ${year}`);
}

let dates = [
  { date: "Sat Mar 06 2021" },
  { date: "Fri Mar 05 2021" },
  { date: "Sun Mar 07 2021" },
];

let sortedDates = dates.sort((a, b) => parseDate(a.date) - parseDate(b.date));

暫無
暫無

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

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