@Vetya

Генерация порядкового номера с сортировкой по дате?

Добрый вечер, совсем совсем "шапочно" знаком с JS и вот уже как 2 недели пытаюсь написать скрипт, суть скрипта - создание и запись в базу номеров отчетов, но так чтобы они каждый месяц начинались с единицы.
Т.е. "1-01-19 от 17.01.19г. Создан: 17 января 2019 года" Такого вида мне необходима полученная запись, где 1(порядковый номер отчета созданного в этом месяце) 01- соответственно месяц 19 - год. Два раза написана дата потому, что отчеты могут создаваться на конкретную дату задним числом, но при этом нужно знать дату создания.
Уже перечитал кучу литературы, но к сожалению реализовать задуманное полностью не получается.
Во-первых уверен, что для данной ситуации не подходит мой вариант генерации последовательных номеров,
а во вторых не могу понять как разбивать по месяцам на отдельные массивы.
Вероятно в моем коде довольно-таки много ошибок,но это мой первый скрипт :-{
jsfiddle.net/VVetya/ofu2bqLv/163
Буду очень признателен за возможные указания на ошибки в коде и пути реализации задуманного.
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 1
john36allTa
@john36allTa
alien glow of a dirty mind
Не до конца понял вашу задачу.. Но, моё мнение:
1. Переменная seq - не нужна, пользуйтесь [].length;
2. Лучше сделать такую структуру [ { date: Date, createDate: createdAt, id: reportId} ]
Обрабатывать так:
var reports = new Array();
var Report = function(date){
	this.date = date;
	this.createDate = Date.now();
	this.id = reports.filter(f=>(f.getFullYear() == date.getFullYear() && f.getMonth() === date.getMonth())).length + 1;
}
let lastReportNumber = reports.filter(f=>(f.getFullYear() == 2019 && f.getMonth() === months.indexOf("Январь"))).length; // последний номер заявки и соответственно их число в месяце (если первый id = 1)
reports = reports.filter(f=>!(f.getFullYear() == 2019 && f.getMonth() === months.indexOf("Январь") && f.id === lastReportNumber)); // Удалить последнюю в январе
reports.push(new Report(Date.now()));//Положить новую
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы