我认为这个问题是不言而喻的。如何在map、filter和其他类似的循环运算符中突破循环?(或者至少是实现此目的的一种变通方法)
谢谢
发布于 2019-04-03 21:17:35
你不能用任何内置的函数,比如map,filter和reduce来做这件事,所以这就只剩下递归了。要模拟中断,您的基本情况将需要检查数组的长度以及中断条件。下面是一个示例,它接受一个数组,并返回一个包含每个值的数组,直到达到偶数:
%dw 1.0
output application/json
%function breakCondition(n)
mod(n, 2) == 0
%function untilEven(arr, out=[])
out when (isEmpty(arr) or breakCondition(arr[0]))
otherwise untilEven(arr[1 to -1], arr[0])
---
untilEven([3, 5, 1, 6, 7, 9])返回:
[3, 5, 1]为了便于将来参考,这里是2.0中的相同示例:
%dw 2.0
output application/json
fun breakCondition(n) =
mod(n, 2) == 0
fun untilEven(arr, out=[]) =
if (isEmpty(arr) or breakCondition(arr[0]))
out
else
untilEven(arr[1 to -1], arr[0])
---
untilEven([3, 5, 1, 6, 7, 9])https://stackoverflow.com/questions/55486090
复制相似问题