从空手道中的JSON响应中的数组中获取最大值

米希尔

我有以下Json作为API调用的响应

{
  "location": {
    "name": "London",
    "region": "City of London, Greater London",
    "country": "United Kingdom",
    "lat": 51.52,
    "lon": -0.11,
    "tz_id": "Europe/London",
    "localtime_epoch": 1583594426,
    "localtime": "2020-03-07 15:20"
  },
  "forecast": {
    "forecastday": [
      {
        "date": "2020-03-03",
        "day": {
          "maxtemp_c": 9,
          "mintemp_c": 4
        }
      },
      {
        "date": "2020-03-04",
        "day": {
          "maxtemp_c": 8,
          "mintemp_c": 4.1
        }
      },
      {
        "date": "2020-03-05",
        "day": {
          "maxtemp_c": 7,
          "mintemp_c": 5.6
        }
      }
    ]
  }
}

我想找出三天当中哪个日期温度最高。

我正在检查js函数中的温度元素时,当前执行的方式效率很低,如下所示

* def hottest = 
        """
        function(array) {
        var greatest;
        var indexOfGreatest;
        for (var i = 0; i < array.length; i++) {
        if (!greatest || array[i].day.maxtemp_c > greatest) {
           greatest = array[i].day.maxtemp_c;
           indexOfGreatest = i;
           }
        }
        return indexOfGreatest;
       }
  """
* def index = call hottest response.forecast.forecastday
* def hottestdate = response.forecast.forecastday[index].date
* print hottestdate 

这样我会得到正确的结果,但是有人可以建议一种更好的方法吗?

彼得·托马斯

空手道的最佳做法是完全不使用JS进行循环。这样可以生成更清晰,更易读的代码:

* def fun = function(x){ return { max: x.day.maxtemp_c, date: x.date } }
* def list = karate.map(response.forecast.forecastday, fun)
* def max = 0
* def index = 0
* def finder =
"""
function(x, i) {
  var max = karate.get('max');
  if (x.max > max) {
    karate.set('max', x.max);
    karate.set('index', i);
  }  
}
"""
* karate.forEach(list, finder)
* print 'found at index', index
* print 'item:', list[index]

请注意,重塑给定的JSON很容易,list这里的结果将是:

[
  {
    "max": 9,
    "date": "2020-03-03"
  },
  {
    "max": 8,
    "date": "2020-03-04"
  },
  {
    "max": 7,
    "date": "2020-03-05"
  }
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

空手道:匹配JSON数组响应,其中每次匹配中数组的顺序都不同

来自分类Dev

空手道:如果对象名称包含数组中的句点,如何设置Json值

来自分类Dev

如何在空手道中为JSON数组设置动态值

来自分类常见问题

如何验证数组响应包括空手道中另一个数组的值

来自分类Dev

如何验证数组响应包括空手道中另一个数组的值

来自分类Dev

空手道的新手:无法从具有连字符的响应中获取值

来自分类Dev

尝试从空手道中的API响应中获取值时遇到错误

来自分类Dev

在空手道DSL中打印SOAP响应

来自分类Dev

根据空手道中的条件验证响应xml

来自分类Dev

如何使用空手道框架从场景 1 响应中获取 csrf 令牌?

来自分类Dev

空手道:为响应中的变量分配特定值

来自分类Dev

在ExecutionHook实现类中获取空手道参数

来自分类Dev

空手道:验证JSON响应中的特定日期

来自分类Dev

验证空手道框架中的浮点值范围

来自分类Dev

在Json有效负载中未正确获取CSV文件特定列的值(空手道框架)

来自分类Dev

空手道功能中JSON的方案大纲

来自分类Dev

空手道中的日期格式

来自分类Dev

GraphQL中的空手道替换

来自分类Dev

如何在空手道功能中遍历数组值

来自分类Dev

比较空手道DSL中的两个JSON数组

来自分类Dev

使用变量对JSON进行空手道获取响应

来自分类Dev

如何遍历空手道响应数组并将其传递到另一个 Web 服务响应的 json 路径中

来自分类Dev

空手道-无法从JSON数组获取对象

来自分类Dev

空手道匹配每个响应断言都无法识别响应中缺少的键

来自分类Dev

使用空手道验证JSON响应中的数字字段的值一直到小数点后两位

来自分类Dev

空手道中的空手道框架符号编码

来自分类Dev

如何通过空手道中的示例表在路径中传递响应变量

来自分类Dev

尝试根据空手道API测试框架中其他键的值为单个值过滤json对象

来自分类Dev

在空手道DSL中修整JSONArray中的零

Related 相关文章

  1. 1

    空手道:匹配JSON数组响应,其中每次匹配中数组的顺序都不同

  2. 2

    空手道:如果对象名称包含数组中的句点,如何设置Json值

  3. 3

    如何在空手道中为JSON数组设置动态值

  4. 4

    如何验证数组响应包括空手道中另一个数组的值

  5. 5

    如何验证数组响应包括空手道中另一个数组的值

  6. 6

    空手道的新手:无法从具有连字符的响应中获取值

  7. 7

    尝试从空手道中的API响应中获取值时遇到错误

  8. 8

    在空手道DSL中打印SOAP响应

  9. 9

    根据空手道中的条件验证响应xml

  10. 10

    如何使用空手道框架从场景 1 响应中获取 csrf 令牌?

  11. 11

    空手道:为响应中的变量分配特定值

  12. 12

    在ExecutionHook实现类中获取空手道参数

  13. 13

    空手道:验证JSON响应中的特定日期

  14. 14

    验证空手道框架中的浮点值范围

  15. 15

    在Json有效负载中未正确获取CSV文件特定列的值(空手道框架)

  16. 16

    空手道功能中JSON的方案大纲

  17. 17

    空手道中的日期格式

  18. 18

    GraphQL中的空手道替换

  19. 19

    如何在空手道功能中遍历数组值

  20. 20

    比较空手道DSL中的两个JSON数组

  21. 21

    使用变量对JSON进行空手道获取响应

  22. 22

    如何遍历空手道响应数组并将其传递到另一个 Web 服务响应的 json 路径中

  23. 23

    空手道-无法从JSON数组获取对象

  24. 24

    空手道匹配每个响应断言都无法识别响应中缺少的键

  25. 25

    使用空手道验证JSON响应中的数字字段的值一直到小数点后两位

  26. 26

    空手道中的空手道框架符号编码

  27. 27

    如何通过空手道中的示例表在路径中传递响应变量

  28. 28

    尝试根据空手道API测试框架中其他键的值为单个值过滤json对象

  29. 29

    在空手道DSL中修整JSONArray中的零

热门标签

归档