首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dataweave 1.0中,如何在filter,map等中跳出循环?

在dataweave 1.0中,如何在filter,map等中跳出循环?
EN

Stack Overflow用户
提问于 2019-04-03 10:18:47
回答 1查看 1.1K关注 0票数 1

我认为这个问题是不言而喻的。如何在map、filter和其他类似的循环运算符中突破循环?(或者至少是实现此目的的一种变通方法)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-03 21:17:35

你不能用任何内置的函数,比如mapfilterreduce来做这件事,所以这就只剩下递归了。要模拟中断,您的基本情况将需要检查数组的长度以及中断条件。下面是一个示例,它接受一个数组,并返回一个包含每个值的数组,直到达到偶数:

代码语言:javascript
复制
%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])

返回:

代码语言:javascript
复制
[3, 5, 1]

为了便于将来参考,这里是2.0中的相同示例:

代码语言:javascript
复制
%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])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55486090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档