javascript - 使用 jmespath 通过两个参数查找最小值和最大值

标签 javascript json lambda functional-programming jmespath

我有这样的对象,我需要用jmespath评估哪个是“最便宜的”

{
  "wines": [
    {
      "name": "b",
      "price1": 30,
      "price2": 110
    },
    {
      "name": "a",
      "price1": 50,
      "price2": 1
    },
    {
      "name": "c",
      "price1": 40,
      "price2": 1130
    }
  ]
}

输出应该是:'a'对象

我正在做:

min_by(wines, &price1, &price2).name
min_by(wines, &price1).name
min_by(wines, sum(&price1, &price2)).name

但运气不好

最佳答案

根据您所说的最便宜的含义,如果您想选择具有价格1和价格2组合的最小值的商品,您可以使用:min_by(wines, &sum([price1,price2])) :

$ echo '{
  "wines": [
    {
      "name": "b",
      "price1": 30,
      "price2": 110
    },
    {
      "name": "a",
      "price1": 50,
      "price2": 1
    },
    {
      "name": "c",
      "price1": 40,
      "price2": 1130
    }
  ]
}' | jp 'min_by(wines, &sum([price1,price2]))'

{
    "price2": 1,
    "price1": 50,
    "name": "a"
}

&需要位于第二个参数的开头,因为预期类型是表达式引用。 &sum([price1,price2])是说对于 wines 中的每一项数组,计算表达式 sum([price1,price2])并使用结果值来确定数组中的哪一项是最小值。

再举一个例子,如果您想选择酒单中价格最低的商品 price1price2 ,您可以替换 summin :

$ echo '{
  "wines": [
    {
      "name": "b",
      "price1": 30,
      "price2": 110
    },
    {
      "name": "a",
      "price1": 50,
      "price2": 1
    },
    {
      "name": "c",
      "price1": 40,
      "price2": 1130
    }
  ]
}' | jp 'min_by(wines, &min([price1,price2]))'

{
    "price2": 1,
    "price1": 50,
    "name": "a"
}

关于javascript - 使用 jmespath 通过两个参数查找最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34272074/

相关文章:

php - iPhone-在 POST 中将 JSON 对象发送到 PHP 服务器并从服务器获取响应

c# - 从字符串构建 Linq 排序表达式结果为 'Expression of "system.int3 2"can not be used for return type "System.Object"'

javascript - Transclude 未注入(inject)链接函数

javascript - 使用 Javascript 函数通过 onSubmit 添加参数到 url

html - 从 JSON 数组读取到 Grails HTML Select 标签

c++ - 是否可以将 lambda 函数用于模板参数?

java - 在 Filter 函数中使用 CompletableFuture

javascript - 从 Google 组织结构图中删除所有子元素

javascript - 在动态创建的表格上使用 CSS 和 JQuery 的最佳实践

javascript - 创建一个使用 JQuery 从 JSON 文件加载数据的动态下拉表单