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

Karate中查找JSON数组元素多次出现的索引方法

在Karate中获取数组所有匹配元素的索引

你之前用indexOf只能拿到第一个匹配的索引,这很正常——因为这个方法本身就只返回目标值首次出现的位置。要拿到所有符合条件的索引,咱们可以用JavaScript的reduce方法遍历数组,收集所有匹配的索引值,具体脚本如下:

* def targetVIN = 'MMTestingVIN00002'
* def response = result.items
* def getMatchingIndices = function(arr, target) {
    // 用reduce遍历数组,收集匹配的索引
    return arr.reduce(function(indices, currentItem, currentIndex) {
        if (currentItem.vin === target) {
            indices.push(currentIndex);
        }
        return indices;
    }, []); // 初始值是空数组,用来存储找到的索引
}
* def matchingIndices = call getMatchingIndices response targetVIN
* print matchingIndices // 输出结果就是 [0,2]

步骤解释:

  • 先定义要查找的目标VIN和待处理的数组response
  • 编写自定义函数getMatchingIndices,它接收数组和目标值两个参数:
    • 用reduce方法遍历数组,每次检查当前元素的vin是否和目标值匹配
    • 如果匹配,就把当前索引加入到结果数组中
  • 调用这个函数,传入你的数组和目标VIN,就能得到所有匹配的索引了

这种方法比indexOf更灵活,只要调整判断条件,还能用来查找其他字段匹配的所有索引~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:42:38