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

TypeScript中如何获取Palantir ObjectSet过滤后的首个/随机单个对象

实现方案

你当前返回类型定义为ObjectSet<CombinedSentencesForTagging>本身就是集合类型,所以必然返回多条数据,要返回单条首先需要把返回类型调整为CombinedSentencesForTagging | undefined,兼容过滤结果为空的场景。


方案1:返回过滤结果的第一条数据

@Function()
public nextUnprocessedValueString(inputObject: ObjectSet<CombinedSentencesForTagging>): CombinedSentencesForTagging | undefined {
    // 执行过滤逻辑,如果你需要基于入参inputObject过滤,可直接替换为inputObject.filter(xxx)
    const filteredSet = Objects.search().combinedSentencesForTagging()
        .filter(f => f.customerFeedback.exactMatch('i like it very much.'))
    // 仅取第一页的1条数据,返回首个元素
    const firstItem = filteredSet.page({ pageSize: 1 }).data[0]
    return firstItem
}

方案2:返回过滤结果中的随机一条数据

@Function()
public nextUnprocessedValueString(inputObject: ObjectSet<CombinedSentencesForTagging>): CombinedSentencesForTagging | undefined {
    const filteredSet = Objects.search().combinedSentencesForTagging()
        .filter(f => f.customerFeedback.exactMatch('i like it very much.'))
    // 先获取符合条件的总条数
    const totalCount = filteredSet.count()
    if (totalCount === 0) {
        return undefined
    }
    // 生成随机偏移量
    const randomOffset = Math.floor(Math.random() * totalCount)
    // 从偏移量位置取1条数据
    const randomItem = filteredSet.page({ pageSize: 1, pageOffset: randomOffset }).data[0]
    return randomItem
}

注意事项

  • 如果你需要基于传入的inputObject集合做过滤,不需要重新调用Objects.search(),直接对inputObject执行filter操作即可,性能更好也更符合入参设计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 22:54:03