Vue/JS中新闻流列表如何实现置顶项优先,其余按story_id倒序排序
解决方法
你可以通过显式指定每个字段对应的排序方向数组解决该问题,修改后代码如下:
filtered_news_feed: function() { // 第一优先级pinned降序(保证值为1的置顶内容排在最前),第二优先级story_id降序 var list = _.orderBy(this.feed_items, ['pinned', 'story_id'], ['desc', 'desc']); return list; }
之前的写法未生效通常是因为你使用的Lodash版本较低,不支持多字段共用同一个排序方向字符串简写,必须通过数组顺序对应每个字段的排序规则。
如果你想要更直观、后续更容易维护的写法,也可以拆分置顶/非置顶列表分别排序再拼接:
filtered_news_feed: function() { // 置顶内容按story_id降序排列 const pinnedItems = _.orderBy(this.feed_items.filter(item => item.pinned === 1), ['story_id'], 'desc'); // 非置顶内容按story_id降序排列 const normalItems = _.orderBy(this.feed_items.filter(item => item.pinned === 0), ['story_id'], 'desc'); // 拼接后返回 return pinnedItems.concat(normalItems); }
内容的提问来源于stack exchange,提问作者Trey Tyler
相关产品推荐
相关产品推荐

