首页 > 解决方案 > array.sort(function(a, b) {return b.value - a.value) 不工作

问题描述

我想从 firebase 检索数据并根据字段“overallScore”以降序对它们进行排序。我看过其他关于使用 array.sort(function(a, b) {return b.value - a.value) 的帖子,但是这行代码无法为我排序数组,我不知道为什么。

我的 firebase 数据结构如下所示:

在此处输入图像描述

我的代码看起来像:

    getAll: function(){
      database.collection('Users').get().then(querySnapShot => {
        let data = [];
        querySnapShot.forEach(doc => { 
            data.push(doc.data())
        })
        this.datasets = data;
        this.getTop();
      })
    },
    getTop: function(){
      var today = String(moment(String(new Date())).format("DDMMYYYY"));
      var top = [];
      for (var i = 0; i < this.datasets.length; i++) {
        if (this.datasets[i].scoreDate == today){
          top.push(this.datasets[i]);
        }
      }
      top.sort(function(a, b){return b.overallScore - a.overallScore});
      this.top10 = top;
    },

这是 for(...) 之后的控制台日志结果:

在此处输入图像描述

标签: javascriptfirebasevue.js

解决方案


sort()方法返回值有 3 个选项:1、-1、0

top.sort(function (a, b) { return a.overallScore > b.overallScore ? 1 : a.overallScore < b.overallScore ? -1 : 0 });


推荐阅读