Reduce trong javascript

Reduce trong javascript

Giới thiệu

Reduce JavaScript là một method có trong Array.prototype được giới thiệu từ ES6 và hiện tại support trên các browser hiện đại. Theo mình thì Reduce là một trong những phương thức khá khó hiểu và dễ gây nhầm lẫn đối với developer ít kinh nghiệm, nhưng khi đã hiểu rõ về bản chất thì chúng ta sẽ có thêm 1 phương án khá linh hoạt để giải quyết các bài toán.

Reduce syntax

const reducedTest = array.reduce((total, currentValue, currentIndex, arr) => {
  // logic here
}, initialValue)

Giải thích:
total: accumulator - biến tích lũy, truyền giá trị trả về của mỗi lần gọi.

currentValue: phần tử trong mảng hiện tại đang được xử lý.

currentIndex: Chỉ mục (index) của phần tử đang được xử lý.

array: Mảng đang được gọi với reduce().

initialValue: Giá trị cho tham số thứ nhất (total) của hàm callback trong lần gọi đầu tiên. Nếu giá trị ban đầu này không được cung cấp, phần tử đầu tiên của mảng sẽ được dùng.

Ví dụ

Để dễ hiểu hơn chúng ta cùng tìm hiểu ví dụ tính tổng 1 mảng dưới đây:

Khá là dễ hiểu phải không, tiếp theo chúng ta đặt consle.log vào callback xem nó hoạt động như thế nào nhé.

Và bạn cũng nên nhớ rằng method reduce sẽ chỉ trả lại một và chỉ một giá trị duy nhất.

Lời kết

Ngoài việc tính tổng 1 mảng, reduce còn có thể làm rất nhiều thứ hay ho khác như: tìm max, tìm min, đảo ngược array, thế map() or filter(), some() or every(), ...
Ở bài viết sau mình sẽ giới thiệu thêm về ứng dụng của reduce trong từng trường hợp cụ thể trên.

Nguồn tham khảo

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

https://www.w3schools.com/jsref/jsref_reduce.asp