Dataweave 2.2 В чем разница между takeWhile и фильтром? - PullRequest
3 голосов
/ 26 марта 2020
%dw 2.0
import * from dw::core::Arrays
output application/json
var arr = [0,1,2,4,3]
---
arr filter $ <= 2

и

%dw 2.0
import * from dw::core::Arrays
output application/json
var arr = [0,1,2,4,3]
---
arr takeWhile $ <= 2

Они оба дают одинаковые результаты. Есть ли разница?

Ответы [ 2 ]

7 голосов
/ 26 марта 2020

Привет, Дейл, есть разница, takeWhile прекратит брать элементы с первым элементом, если условие не выполняется, что не относится к фильтру, поэтому для этого примера [0,2,4,3,1]

С TakeWhile

%dw 2.0
import * from dw::core::Arrays
output application/json
var arr = [0,2,4,3,1]
---
arr takeWhile $ <= 2

Возвращает:

[
  0,
  2
]

С фильтром

%dw 2.0
import * from dw::core::Arrays
output application/json
var arr = [0,2,4,3,1]
---
arr filter $ <= 2

Возвращает:

[
  0,
  2,
  1
]
0 голосов
/ 28 марта 2020

takeWhile : выбирает элементы из массива при выполнении условия, но останавливает процесс выбора, когда достигает элемента, который не удовлетворяет условию.

Сценарий

%dw 2.0
import * from dw::core::Arrays
output application/json
var arr = [0,2,4,3,1]
---
arr takeWhile $ <= 2

Выход

[
  0,
  2
]

фильтр : чтобы выбрать все элементы, которые удовлетворяют условию, используйте функцию. Скрипт

%dw 2.0
import * from dw::core::Arrays
output application/json
var arr = [0,2,4,3,1]
---
arr filter $ <= 2

Вывод

[
  0,
  2,
  1
]
...