# #javascript #firebase #sorting #google-cloud-firestore #key-value
Вопрос:
Мне нужна помощь, чтобы выяснить, как сортировать эти массивы по дате, которая указывается в секундах, а затем преобразуется в дату с помощью .Функция ToDate.
const todoList = document.querySelector('.upcoming ul');
const generateTemplate = (todo, date) => {
const html = `<h5 style="padding-top: 5px; font-weight: 375; margin-top: auto;">${date}</h5><li>
${todo}
</li>`
todoList.innerHTML = html;
};
let events = [];
db.collection("Users").doc(user.uid).get().then((doc) => {
var gid = doc.get("group");
db.collection("Groups").doc(gid).get()
.then((document) => {
var fields = Object.keys(document.data());
var dates = Object.values(document.data());
console.log(fields);
console.log(dates);
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
fields.forEach(field => {
var date = document.get(field).toDate().toLocaleDateString('de-DE', options)
var now = new Date();
if (document.get(field).toDate() < now) {
var path = db.collection("Groups").doc(gid);
path.update({
[field]: firebase.firestore.FieldValue.delete()
});
}
generateTemplate(field, date);
});
});
});
Я не уверен, как решить эту проблему, потому что я использую цикл forEach, чтобы добавить все innerHTML в список.
Это список и выходные данные для полей и дат
Если вам нужна какая-либо дополнительная информация, пожалуйста, ответьте. Я все еще довольно новичок в stackoverflow и во всем сообществе программистов, так как мне всего 14 лет.
Спасибо вам за помощь!
Ответ №1:
Вы можете использовать сортировку массива перед отображением по полям, как здесь:
db.collection("Groups")
.doc(gid)
.get()
.then((document) => {
var fields = Object.keys(document.data());
var dates = Object.values(document.data());
console.log(fields);
console.log(dates);
const options = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
};
fields
.sort(function (a, b) {
return document
.get(b).seconds - document
.get(a).seconds;
})
.map((field) => {
var date = document
.get(field)
.toDate()
.toLocaleDateString("de-DE", options);
var now = new Date();
if (document.get(field).toDate() < now) {
var path = db.collection("Groups").doc(gid);
path.update({
[field]: firebase.firestore.FieldValue.delete(),
});
}
generateTemplate(field, date);
});
});
Комментарии:
1. Я попробовал это решение, но, к сожалению, оно по-прежнему просто сортирует список случайным образом.
2. можете ли вы попробовать зарегистрировать список до и после сортировки?
3. Да, я зарегистрировал список до того, как он был отсортирован, а затем один раз в функции карты вот результаты вывода и код: imgur.com/a/Mce49Ew
4. Можете ли вы, пожалуйста, войти
dateA
иdateB
просто проверить, есть ли у нас там правильные даты.5. Вот результат, когда я регистрирую обе даты imgur.com/a/g2sQfGs