我有一个适用于硬编码日期数组的排序函数。但是,当我尝试对 firebase 查询创建的日期数组进行排序时,我无法排序。
//THIS DOES NOT SORT
const dayRef = firebase.database().ref('Calendar/District/' + district + '/validDays/');
dayRef.once('value').then(function (snapshot) {
var value = snapshot.val();
if (value) {
snapshot.forEach(function (childSnapshot) {
var myDate = childSnapshot.val();
days.push(new Date(myDate.date)); //ARRAY DOES NOT SORT
});
}
});
// THIS SORTS MY HARD CODED ARRAY
var dates = [
new Date(2010, 5, 10),
new Date(2010, 2, 10),
new Date(2010, 3, 10),
new Date(2010, 8, 10),
new Date(2010, 1, 10),
new Date(2010, 6, 10),
new Date(2010, 11, 10),
new Date(2010, 8, 10)];
var date_sort_asc = function (date1, date2) {
if (date1 > date2) return 1;
if (date1 < date2) return -1;
return 0;
};
console.log(dates.sort(date_sort_asc)) // this sorts
console.log(days.sort(date_sort_asc)) // this does not sort
</script>
我需要按升序对天数数组进行排序
最佳答案
在 promise 解决之前,您正在排序。
if (value) {
snapshot.forEach(function (childSnapshot) {
var myDate = childSnapshot.val();
days.push(new Date(myDate.date)); //ARRAY DOES NOT SORT, yet...
});
days.sort(date_sort_asc); // <-- Do it here
}
关于javascript - 为什么我无法对 firebase 查询返回的日期数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55424331/