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

2023-12-12

我有以下 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 for 循环。它会产生更干净、更易读的代码:

* 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"
  }
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在空手道中从 JSON 响应中的数组获取最大值 的相关文章

随机推荐

  • 如何防止 iOS 14 Widget 打开应用程序并对回调做出反应

    因此 我已经阅读了几篇博客 帖子和苹果自己的人机界面指南 指出 iOS 14 小部件不是交互式的 但是 按下目标时可以传递到应用程序的短链接 苹果公司自己表示 小型小部件有一个单一的点击目标 中型和大型小部件有多个点击目标 好的 现在 当您
  • Java中如何获取当前时刻的年、月、日、时、分、秒、毫秒?

    如何在Java中获取当前时刻的年 月 日 时 分 秒和毫秒 我想让他们成为Strings 您可以使用以下的吸气剂java time LocalDateTime为了那个原因 LocalDateTime now LocalDateTime no
  • 获取 URL 的 Facebook 分享/点赞/评论计数

    今天之前 我使用以下 URL 来获取某个 URL 的 Facebook 分享 点赞 评论计数 https api facebook com method links getStats format json urls http stacko
  • Python——加速导入?

    我有 10000 个自定义 编译为 so 模块 我想在其中使用python 模块的使用是有后果的 模块是一个接一个地使用的 而不是同时使用的 通常 代码看起来像这样 list with all the paths to all module
  • load() 顺序执行,而不是与 jQuery 同时执行

    我正在开发一个网站 我想从导航栏中获取所有链接 并将链接页面中的 div 加载到一个大容器中 到目前为止我所拥有的是以下内容 nav a each function index var to load this attr href slid
  • 不要在循环内创建函数。 - jslint 错误

    我收到此 jslint 错误 不要在循环内创建函数 我无法更改导致此问题的 javascript 但是由于修改它的限制 我无法更改 因此 我想关闭此验证以检查特定 javascript 文件中是否存在此错误 对于这个js错误可以这样做吗 不
  • 如何重现特定的友好URL?

    我们正在尝试将 JSP XSLT 应用程序重构为 JSF 我们使用 CMS 进行内容管理 技术 使用 Mojarra PrimeFaces 2 2 1 和 Tomcat 6 29 的 JSF 2 0 数据结构的组织如下 有网站 站点包含频道
  • Node.js 中的延迟加载

    我想知道是否使用require 在node js中相当于延迟加载 例如 如果我有一个函数需要特定的 node js 包 而我的代码中其他任何地方都不需要这个包 那么我最好使用require 仅在调用该函数时才包含所需的包 由于我对 Node
  • Laravel 5.3 身份验证后重定向的自定义路径

    我有两种类型的用户 供应商 和 客户 我目前正在使用Laravel s built in Auth Controllers 来自make auth命令 来进行我的客户端用户身份验证 由于我有两种用户 所以我改变了 redirectTo财产在
  • Flutter post api发送具有相同名称参数的多个值

    如何在flutter中的post api中使用相同名称参数发送多个数据 在php中 我们使用parameter 然后我们可以发送多个数据 但我对flutter很陌生 所以我想知道它是如何完成的 谢谢 示例图片 https i stack i
  • 删除 gtk.button 的边框

    我想删除 gtk button 的边框 但我不知道该怎么做 我尝试过 button gtk Button button set style inner border 0 但我有一个错误 该属性不存在 我也尝试创建一个新的 gtk Style
  • 捕获 SYCL 异常:错误:[ComputeCpp:RT0101] 无法创建内核((内核名称:SYCL_class_multiply))

    我克隆了https github com codeplaysoftware computecpp sdk git并修改了computecpp sdk samples accessors accessors cpp file 我刚刚添加了st
  • 如何将android触摸坐标转换为OpenCV图像坐标?

    我正在尝试做类似的事情 但在 Android 上 http docs opencv org doc tutorials imgproc imgtrans warp affine warp affine html我有一个绘制到 ImageVi
  • HTML 5 文件系统访问类型错误

    我正在开发一个网络应用程序 并尝试使用文件系统 API 访问目录 在根据规范访问目录之前 我需要向用户请求配额 我应该做这样的事情 navigator webkitPersistentStorage requestQuota PERSIST
  • C 函数中的全局变量和返回多个可变长度数组(指针)

    我有一些编程经验 但 C 语言不多 我有一个相当大的 C 文件 其中有多个按顺序执行的函数 因此在这种特殊情况下 实际上没有函数被调用两次 为了便于阅读 它们被分解 因为每个函数仍然有单独的目的 该程序对几个可变长度的 double 长数组
  • 如何使用 Windows 7 中的自动运行从闪存驱动器打开网页?

    我一直在尝试想出一种方法来自动运行一系列托管在 USB 闪存驱动器上的 HTML 页面 这些都是静态页面 并且都链接到我的闪存驱动器根目录中的index html 我尝试设置一个 autorun inf 文件 如下所示 autorun op
  • 将 require 与相对路径结合使用

    我们对 Protractor 有一组相当大的端到端测试 我们遵循页面对象模式 这有助于我们保持测试的干净和模块化 我们还有一组辅助函数可以帮助我们遵循干原则 问题 单个规范可能需要多个页面对象和辅助模块 例如 use strict var
  • 如何从 Process.GetCurrentProcess().Threads 获取托管线程

    我可以从 Process GetCurrentProcess Threads 获取正在运行的线程列表 但我需要知道以 Thread Start 启动的线程的托管名称 但它不是 ProcessThread 对象的属性 有没有办法从 Proce
  • 为什么这段代码的JTextArea占据了整个JFrame?

    我希望框架的一部分包含 JTextArea 但它完全占据了 我无法在这里追踪错误 import java awt import javax swing public class EchoServer public static void m
  • 在空手道中从 JSON 响应中的数组获取最大值

    我有以下 Json 作为 API 调用的响应 location name London region City of London Greater London country United Kingdom lat 51 52 lon 0