javascript - 为什么我无法对 firebase 查询返回的日期数组进行排序?

标签 javascript arrays firebase sorting

我有一个适用于硬编码日期数组的排序函数。但是,当我尝试对 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/

相关文章:

javascript - i 标签点击事件在 Internet Explorer 11 中不起作用

javascript - 加载图像并淡入,但以顺序方式

mysql - 从 Mysql 中的数组中的 Json 数据获取值

javascript - 在循环内缓存数组查找是否会提高性能?

javascript - Internet Explorer 中未定义 JS 函数

java - 将数据库缓存到每 5 分钟刷新一次的数组中

python - 当项目集等于 fill_value 时自动屏蔽 np.ma 数组

firebase - 如何在函数中使用存储在Firestore云数据库中的数据ro如何在列表或数组中填充/存储NetworkImage小部件

ios - 在加载数据之前完成所有异步请求?

ios - 初始化变量 : 'self' captured by a closure before all members were initialized