javascript 排序来自计算属性的数组,在方法中也排序原始数组(来自计算属性)

ogsagwnx  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(109)

我正在为测验构建一个vue应用程序,我想显示参加测验的人之前的所有结果,为此我从后端获取结果,然后将它们传递给“view”组件,并使用一个computed属性:

computed: {
    allResults() {
      return this.$store.state.allResults;
    },

我还想整理出最好的结果,和最近的结果,并分别显示它们,为了做到这一点,我有以下方法:

bestResults() {
    let orderedArray = this.allResults;

    orderedArray.sort((a, b) =>
      a.score < b.score ? 1 : a.score > b.score ? -1 : 0
    );
    let half = Math.round(orderedArray.length / 2);

    let bestResults = orderedArray.slice(0, half);
    return bestResults;
  },

 recentResults() {
    let recentResults = this.allResults.slice(0, 5);
    return recentResults;
  }

这是可行的,但是它以从最高到最低显示得分的方式对allResults数组进行排序,这是我在bestResults()函数中所做的,这是一个问题,因为我想基于日期显示recentResults,它应该在顶部显示最近的结果。

wnavrhmk

wnavrhmk1#

首先对bestResults()中的数组排序,然后使用recentResults中的排序数组。
作为一种解决方案,您可以创建一个具有相同元素的新数组并对其进行排序,这将保持原始数组不变:

bestResults() {
    let orderedArray = [...this.allResults];

    orderedArray.sort((a, b) =>
      a.score < b.score ? 1 : a.score > b.score ? -1 : 0
    );
    let half = Math.round(orderedArray.length / 2);

    let bestResults = orderedArray.slice(0, half);
    return bestResults;
  },

 recentResults() {
    let recentResults = this.allResults.slice(0, 5);
    return recentResults;
  }

相关问题