Sử dụng hàm reduce() trong DataWeave

Hàm reduce() trong DataWeave 1 và 2 là hàm giúp chúng ta có thể thao tác trên các phần tử của một array và output ra kiểu dữ liệu mà chúng ta muốn.

Để làm được điều này, tham số của hàm reduce() bao gồm item trong array mà chúng ta sẽ thao tác và tham số thứ 2 accumulator sẽ lưu trữ và định nghĩa kiểu dữ liệu mà chúng ta muốn trả về. Cấu trúc của hàm reduce() được viết theo kiểu Lambda Expression từ Java 8 như sau:

Trong đó, <input> là array mà chúng ta sẽ thao tác. Hàm reduce() sẽ loop qua tất cả các item của array, và đối với mỗi item, nó sẽ thực hiện thao tác được định nghĩa trong tham số acc (accumulator). Tham số acc vừa định nghĩa thao tác mà chúng ta muốn như cộng, trừ, nối chuỗi, … vừa lưu trữ giá trị mà chúng ta đã thao tác với các phần tử trong mảng trước phần tử mà nó đang processing. Giá trị của tham số acc sẽ bắt đầu từ phần tử đầu tiên của array và chúng ta có thể định nghĩa kiểu dữ liệu trả về sử dụng tham số acc này như sau:

cho đối tượng Object,

cho mảng và

cho String.

Ví dụ mình có array như sau:

Để lấy số phần tử của array này, và giá trị đầu tiên của tham số acc, các bạn có thể code như sau:

Kết quả:

Sử dụng hàm reduce trong DataWeave

Vì ở đây, chúng ta ko thực hiện thao tác gì cả nên như các bạn thấy, giá trị mặc định của tham số acc và số phần tử của mảng sẽ được in ra.

Nếu các bạn muốn tính tổng, nối chuỗi, đảo ngược chuỗi thì có thể viết như sau:

Kết quả:

Sử dụng hàm reduce trong DataWeave

Việc chúng ta định nghĩa thao tác trước hoặc sau tham số acc cộng với việc định nghĩa output trong tham số này sẽ giúp chúng ta có được kết quả mong muốn, DataWeave sẽ dựa vào các định nghĩa này để trả về kết quả.

Mặc định thì giá trị của tham số acc sẽ là giá trị của phần tử đầu tiên trong mảng, nhưng nếu các bạn set cho nó một giá trị đầu tiên, ví dụ như:

thì giá trị ban đầu của tham số acc sẽ là giá trị này.

Như ví dụ trên, mình gán cho tham số acc một giá trị ban đầu là 2 nên khi tính toán tổng các phần tử của mảng trên, giá trị cuối cùng sẽ là 12:

Sử dụng hàm reduce trong DataWeave

Nếu các bạn có một đối tượng tương tự như sau:

và các bạn muốn output là một mảng của tên sinh viên thì các bạn có thể code như sau:

Ở đây, chúng ta đang định nghĩa kiểu dữ liệu trả về cho tham số acc là một mảng nên khi output các bạn sẽ thấy kết quả như sau:

Sử dụng hàm reduce trong DataWeave

Các bạn cũng có thể sử dụng các ký tự $ để thay thế cho tham số item của mảng và $$ thay thế cho tham số acc khi sử dụng hàm reduce tương tự như hàm pluck() trong DataWeave.

Ví dụ chúng ta cũng có thể viết code sử dụng $ và $$ như sau:

Kết quả vẫn vậy:

Sử dụng hàm reduce trong DataWeave

Chia sẽ bài viết này ...Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

Add Comment