Если вы уверены, что в данных дат нет лет, попробуйте следующее:
function sortDateStrArrayFrom(dayAndMonth, array) {
const dateFrom = new Date(dayAndMonth);
const datesBefore = [];
const datesEqual = [];
const datesAfter = [];
array.forEach(dateStr => {
const date = new Date(dateStr);
if (date < dateFrom) {
datesBefore.push(dateStr);
}
if (date === dateFrom) {
datesEqual.push(dateStr);
}
if (date > dateFrom) {
datesAfter.push(dateStr);
}
})
return [...datesEqual, ...datesAfter, ...datesBefore];
}
const arr = ['21. may', '01. jan', '05. feb', '07. jun', '20. dec'];
sortDateStrArrayFrom('18. mar', arr); // ["21. may", "07. jun", "20. dec", "01. jan", "05. feb"]
При необходимости его можно изменить, указав дату в качестве входного параметра или установив тот же год для каждая дата работать независимо от года
eventOne
общественное мероприятие, поддержанное частным полем типа EventHandler
.eventTwo
общедоступное поле типа EventHandler
.В основном событие только инкапсулирует идеи, "подписываются" и "отказываются от подписки" таким же образом, которого свойство только инкапсулирует идеи, "получают" и "устанавливают", а не настоящее хранение. (Что касается CLR, что событие может также выставить метод "повышения", но C# никогда не использует это. Проигнорируйте его.)
См. мою статью о событиях (альтернативная ссылка) для больше о различии между делегатами и событиями.
При помощи ключевого слова события Вы говорите, что C# идут, генерируют к скрытым методам, add_XXX и remove_XXX для Вашего базового делегата. Это удостоверяется, что любой использующий Ваш класс может только присоединить и удалить делегатов в событии. Ключевой пункт - то, что никто вне Вашего класса и не генерирует событие, таким образом, у Вас есть полный контроль, когда это произойдет.
Если Вы не используете событие затем, Вы просто подвергаете общедоступного делегата, к которому любой может добавить, удалить из и вызвать. Очень маловероятно, что Вы хотите, чтобы любой кроме Вашего класса сделал вызов.
Это - программа для иллюстрирования различия, принимая во внимание ответы прежде
using System;
class Program
{
static void Main(string[] args)
{
var a = new A();
a.eventOne += (s, e) => Console.WriteLine("One");
a.eventTwo += (s, e) => Console.WriteLine("Two");
a.RaiseOne();
a.RaiseTwo();
// won't compile
a.eventOne(null, EventArgs.Empty);
a.eventTwo(null, EventArgs.Empty);
}
}
class A {
public event EventHandler eventOne;
public EventHandler eventTwo;
public void RaiseOne()
{
if (eventOne != null)
eventOne(this, EventArgs.Empty);
}
public void RaiseTwo()
{
if (eventTwo != null)
eventTwo(this, EventArgs.Empty);
}
}