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

如何提取序列中满足指定条件的最后一个值(无需mv-expand)

提取序列中满足特定条件的最后一个值(无需使用mv-expand)

当然可以实现,以下是基于Kusto Query Language(KQL)的纯数组函数实现方案,完全不需要使用mv-expand:

核心思路

通过数组过滤函数筛选出所有符合条件的元素,直接取过滤后数组的最后一个元素(对应原序列中满足条件的最后一个值);同时处理过滤后无符合条件元素的边界情况。

代码示例

针对你给出的示例(序列[0, 10, 15, 2],条件element > 10),实现代码如下:

// 定义输入序列
let input_sequence = dynamic([0, 10, 15, 2]);
// 过滤出所有满足条件的元素
let filtered_elements = array_filter(input_sequence, (element) => element > 10);
// 提取最后一个符合条件的元素(无符合条件时返回null)
let target_value = iff(array_length(filtered_elements) > 0, filtered_elements[-1], null);
// 输出结果
print target_value

执行后输出结果为15,与预期一致。

另一种实现思路(反转序列找首个符合条件元素)

也可以通过反转序列,找到第一个满足条件的元素(对应原序列的最后一个符合条件元素):

let input_sequence = dynamic([0, 10, 15, 2]);
let reversed_sequence = array_reverse(input_sequence);
// 找到反转后首个满足条件的元素索引
let match_index = array_index_of(reversed_sequence, (element) => element > 10);
let target_value = iff(match_index != -1, reversed_sequence[match_index], null);
print target_value

优势说明

这类纯数组函数的实现方式避免了mv-expand带来的行展开操作,在处理大规模序列时性能更优,且代码逻辑简洁直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:20:30