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

使用transform-items对Algolia命中结果按日期排序的技术问询

解决方案:按product_event字段排序事件分类结果

直接在isEventsActive的判断分支里,对结果数组按product_event字段进行排序即可,以下是完整的transformItems函数实现:

transformItems(items) {
    if (this.isEventsActive) {
        // 创建数组副本避免修改原数据,按日期升序排序(早的在前)
        return [...items].sort((a, b) => {
            // 将product_event转为Date对象,通过减法比较时间先后
            return new Date(a.product_event) - new Date(b.product_event);
            // 若需要降序(晚的在前),替换为:
            // return new Date(b.product_event) - new Date(a.product_event);
        });
    } else {
        // 原随机排序逻辑保持不变
        for (
            let j, x, i = items.length;
            i;
            j = Math.floor(Math.random() * i), x = items[--i], items[i] = items[j], items[j] = x
        );
        return items;
    }
},

关键说明

  1. 数组副本:使用[...items]创建原数组的浅拷贝,因为sort()方法会原地修改数组,避免影响其他逻辑中的原数据。
  2. 日期比较:
    • 如果product_event是ISO格式的字符串(如2024-05-20、2024-05-20T14:30:00),new Date()可以直接解析,通过减法得到时间差来排序。
    • 如果product_event是数字类型的时间戳,可简化为return a.product_event - b.product_event(升序),无需转换为Date对象。
  3. 异常处理(可选):如果存在部分事件缺失product_event字段的情况,可以添加判断逻辑,将缺失字段的条目排到末尾:
    return [...items].sort((a, b) => {
        if (!a.product_event) return 1;
        if (!b.product_event) return -1;
        return new Date(a.product_event) - new Date(b.product_event);
    });
    

内容的提问来源于stack exchange,提问作者Tyssen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:03:14