我需要某些可能是常見問題的東西以及其他人也會從中受益的某些幫助,即修改對象中的日期並將其組合爲按時間順序排列的列表。總體目標是建立反映所有在一年即將到來的特殊日期列表:Javascript遍歷併合並對象中的日期
1 Jan - Sharpe's Anniversary 2 May - Edward's Birthday 12 Dec - Zero's Anniversary etc...
我開始通過創建一個對象來表示此。然後將年份劃分出來,以便比較不會按照它們的初次出現次序排列它們,而是按年度計算。然後執行比較以按時間順序排列日期。然後用匹配的人員的身份註銷結果。
到目前爲止,我得到它的工作。但是,我不知道如何重複這一點,並使其乾燥。當然,爲週年紀念運行這個會很瑣碎,然後在沒有做出某種自定義功能的情況下生日。我所有的嘗試都沒有成功。
有沒有人有更優雅的解決方案?
很大程度上得益於這裏的社區:)
// Sample data
var items = [{
name: 'Edward',
anniversary: "2015-01-23",
birthday: "1988-05-02"
},
{
name: 'Sharpe',
anniversary: "2017-01-01",
birthday: "1988-05-10"
},
{
name: 'And',
anniversary: "2018-05-10",
birthday: "1988-06-12"
},
{
name: 'The',
anniversary: "1988-08-11",
birthday: "1979-03-12"
},
{
name: 'Magnetic',
anniversary: "2017-01-05",
birthday: "1956-06-21"
},
{
name: 'Zeros',
anniversary: "1990-12-12",
birthday: "1935-07-23"
}
];
// Slice out the year so that dates are annualized
for (var i = 0; i < items.length; i++) {
items[i].anniversary = items[i].anniversary.slice(5, 10);
};
// Sort dates in chronological order
items.sort(function(a, b) {
return new Date(a.anniversary) - new Date(b.anniversary);
});
// Console.log the dates with their associated name
for (var i = 0; i < items.length; i++) {
console.log(items[i].anniversary + " " + items[i].name);
}
Rob這是一個完美的答案。我也對這個更聰明的版本感興趣。你會如何做到這一點? –