Iteration 如何定义reduce(使用foreach)

Iteration 如何定义reduce(使用foreach),iteration,jq,Iteration,Jq,我很难理解如何使用foreach。我有点“理解”文本,但手册中给出的示例有点让我不知所措。您能告诉我如何使用foreach定义reduce操作吗 reduce SOURCE as $VAR (INIT; REDUCTION) 相当于 [ foreach SOURCE as $VAR (INIT; REDUCTION; .) ] | last reduce SOURCE as $VAR ( { state: ( INIT ), rv: [] }; .state |= ( UPDAT

我很难理解如何使用
foreach
。我有点“理解”文本,但手册中给出的示例有点让我不知所措。您能告诉我如何使用
foreach
定义
reduce
操作吗

reduce SOURCE as $VAR (INIT; REDUCTION)
相当于

[ foreach SOURCE as $VAR (INIT; REDUCTION; .) ] | last
reduce SOURCE as $VAR (
   { state: ( INIT ), rv: [] };
   .state |= ( UPDATE ) |
   .rv += [ .state | EXTRACT ]
) | .rv[]
相反地

foreach SOURCE as $VAR (INIT; UPDATE; EXTRACT)
相当于

[ foreach SOURCE as $VAR (INIT; REDUCTION; .) ] | last
reduce SOURCE as $VAR (
   { state: ( INIT ), rv: [] };
   .state |= ( UPDATE ) |
   .rv += [ .state | EXTRACT ]
) | .rv[]
A你可以看到,它们非常相似。事实上,几乎一模一样

  • 如果需要单个结果,请使用
    reduce
  • 当需要每个输入的结果时,请使用
    foreach

例如,假设我们有以下输入:

[“abc”、“def”、“ghi”、“jkl”、“mno”]
产生

true
false
true
false
true
"abc"
"ghi"
"mno"
所以

产生

true
false
true
false
true
"abc"
"ghi"
"mno"
相当于

[ foreach SOURCE as $VAR (INIT; REDUCTION; .) ] | last
reduce SOURCE as $VAR (
   { state: ( INIT ), rv: [] };
   .state |= ( UPDATE ) |
   .rv += [ .state | EXTRACT ]
) | .rv[]
相反地

foreach SOURCE as $VAR (INIT; UPDATE; EXTRACT)
相当于

[ foreach SOURCE as $VAR (INIT; REDUCTION; .) ] | last
reduce SOURCE as $VAR (
   { state: ( INIT ), rv: [] };
   .state |= ( UPDATE ) |
   .rv += [ .state | EXTRACT ]
) | .rv[]
A你可以看到,它们非常相似。事实上,几乎一模一样

  • 如果需要单个结果,请使用
    reduce
  • 当需要每个输入的结果时,请使用
    foreach

例如,假设我们有以下输入:

[“abc”、“def”、“ghi”、“jkl”、“mno”]
产生

true
false
true
false
true
"abc"
"ghi"
"mno"
所以

产生

true
false
true
false
true
"abc"
"ghi"
"mno"

为什么投反对票?手册本身说,foreach是广义的reduce。所以我想知道如何使用foreach编写reduce来理解它。应该很容易!但我完全无法理解。为什么要投反对票?手册本身说,foreach是广义的reduce。所以我想知道如何使用foreach编写reduce来理解它。应该很容易!但是我完全不理解。谢谢你,非常有帮助!若你们能(或某人)将其添加到手册中,那个就太好了,因为这些操作对于一个新加入功能世界的人来说可能是一个挑战。我不同意。这不是解释它们的方式。首先,本手册不是一个教程,
reduce
的教程看起来更像(不包括提到
foreach
的部分)。无论如何,您在这里的解释对我有帮助,而手册中使用“数组数组”作为工作状态的唯一示例对我来说不太友好。再次感谢你帮助我
foreach
在某些方面是程序性的,首先是因为程序性的解释很简单,其次是因为它很准确——从包含
break
语句的
foreach
表达式可以看出。谢谢,非常有用!若你们能(或某人)将其添加到手册中,那个就太好了,因为这些操作对于一个新加入功能世界的人来说可能是一个挑战。我不同意。这不是解释它们的方式。首先,本手册不是一个教程,
reduce
的教程看起来更像(不包括提到
foreach
的部分)。无论如何,您在这里的解释对我有帮助,而手册中使用“数组数组”作为工作状态的唯一示例对我来说不太友好。再次感谢你帮助我
foreach
在某些方面可以从程序上最好地理解,首先是因为程序解释很简单,其次是因为它很准确——从包含
break
语句的
foreach
表达式可以看出。