【问题标题】:How to sort columns in Vue when the values to sort are the result of calculations当要排序的值是计算结果时如何在Vue中对列进行排序
【发布时间】:2021-01-02 11:27:04
【问题描述】:

我找到了许多用于排序数据的资源,这些资源已经在数组中,但在排序动态生成的数据时找不到任何东西。

<table>
    <thead>
      <tr>
        <th>Program</th>
        <th>Rewards</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="program in programs" :key="program.id">
        <td>{{ program.program_name }}</td>
        <td>{{ pointValue(program) | percent }}</td>
      </tr>
    </tbody>
  </table>

pointValue() 是一种计算并返回显示为 % 的值的方法。这是奖励栏。我希望表格可以按程序和奖励排​​序。 (程序只是一个字符串)。

【问题讨论】:

  • 您需要提供更多关于排序要求、pointValue 函数的详细信息,并展示一些解决问题的尝试。最好也显示脚本部分...

标签: javascript vue.js vuejs2 vue-component


【解决方案1】:

使用mapsort 方法为程序创建计算数组并​​对其进行迭代

computed: {
  computedPrograms() {
    return this.programs
      .map(program => {
        return {
           ...program,
           value: this.pointValue(program)
        }
      })
      .sort((a, b) => a.value - b.value)
  }
}
<tr v-for="program in computedPrograms" :key="program.id">
  <td>{{ program.program_name }}</td>
  <td>{{ program.value | percent }}</td>
</tr>

【讨论】:

  • 谢谢! "this.pointValue(program)" 我不知道你能做到这一点,所以这肯定会让一切变得更加清晰。
  • @wilfra 请将答案标记为正确。奖励帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 2014-01-08
  • 2021-06-29
相关资源
最近更新 更多