You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:07