【发布时间】:2021-08-21 16:04:46
【问题描述】:
在 Lodash 中的 sortBy() 没有按降序排序,当我传递 'desc' 时,当调用函数为 const sortedData = _.sortBy(data, ['rawAvgPrice'], ['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);
},
【问题讨论】:
-
作为升序排序后的替代快速解决方案,只需执行 array.reverse()
-
@SteveTomlin 甚至我也看到了这种生活黑客。但我正在寻找一个合法/适当的解决方案。这也有效。另外,当我这样做时,它会将数组移动到该元素不存在的位置。
标签: javascript vue.js sorting lodash