vue.js 如何使Lodash sortBy()对数据进行降序排序?

cdmah0mi  于 2023-01-17  发布在  Vue.js
关注(0)|答案(3)|浏览(566)

Lodash中的sortBy()在调用函数const sortedData = _.sortBy(data, ['rawAvgPrice'], ['desc']);时,当我传递'desc'时,没有按降序排序。这对升序很有效。但对降序就不行了。我已经发布了我编写的排序功能。我读了线程“lodash multi-column sortBy descending“,但它对我的问题没有帮助。因此决定发布这个。

/**
     * @param {String} element - sorting object element name.
     * @param {String} dir - the direction of the sort ASC/DESC.
     * @param {Boolean} flag - Signaling to sort the table and update.
     */
    sortTableNew(element, dir, flag) {
      let direction = dir;
      
      // Change the sorting from ASC to DESC/ DESC to ASC
      if (flag) {
        direction = dir === 'asc' ? 'desc' : 'asc';
      }
      
      // Getting the current open tabs details
      const { activeTab } = this.$props.state.keywordSearch;
      const { data } = this.$props.state.keywordSearch.tabs[activeTab];

      const sortedData = _.sortBy(data, [element], [direction]);
      
      // Updating the cache to dispatch data to the table
      cachedHelper.updateCacheKeyword(cachedHelper.SCREEN_TYPE.keywordSearch, activeTab, sortedData);
      cachedHelper.updateCacheSortType(cachedHelper.SCREEN_TYPE.keywordSearch, activeTab, direction, column);
    },
qvk1mo1f

qvk1mo1f1#

在lodash文档中,我们在搜索_.sortBy时发现:创建元素数组,按集合中的每个元素在每个迭代对象中运行的结果按升序排序。
从这里我们可以看到_.sortBy总是返回一个升序排序的数组。
您可以尝试使用_.orderBy,如下所示:_.orderBy(users, 'age', 'desc');

eanckbw9

eanckbw92#

您可以尝试使用Lodash的orderBy方法,它对我来说非常有用。

var users = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 34 },
  { 'user': 'fred',   'age': 40 },
  { 'user': 'barney', 'age': 36 }
];
 
// Sort by `user` in ascending order and by `age` in descending order.
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48],

您可以在此处查看官方文档Lodash orderBy

5n0oy7gb

5n0oy7gb3#

这里没有提到的另一个选项是只对结果进行.reverse()

const users = [{
    'user': 'alice',
    'age': 48
  },
  {
    'user': 'bob',
    'age': 34
  },
  {
    'user': 'claire',
    'age': 40
  },
  {
    'user': 'dennis',
    'age': 36
  }
];

// Sort by `user` in ascending order and by `age` in descending order.
console.log(_.sortBy(users, 'age').reverse());
<script src="https://unpkg.com/lodash@4.17.21/lodash.js"></script>

相关问题