Hướng dẫn javascript reducer example - ví dụ về trình giảm thiểu javascript
Reduce là một phương thức sẵn có được sử dụng để thực thi một hàm lên các phần tử của mảng (từ trái sang phải) với một biến tích lũy để thu về một giá trị duy nhất. Là một phương thức quan trọng hay sử dụng trong lập trình hàm. Show
Cú pháp
Tham sốcallback là hàm thực thi với từng phần tử của hàm, với 4 tham số là: accumulator, currentValue, index và array. là hàm thực thi với từng phần tử của hàm, với 4 tham số là: accumulator, currentValue, index và array.
initialValue là giá trị cho tham số thứ nhất (accumulator) của hàm callback trong lần gọi hàm đầu tiên. Nếu giá trị này không được cung cấp thì giá trị phần tử đầu tiên của mảng sẽ được sử dụng. là giá trị cho tham số thứ nhất (accumulator) của hàm callback trong lần gọi hàm đầu tiên. Nếu giá trị này không được cung cấp thì giá trị phần tử đầu tiên của mảng sẽ được sử dụng. Giá trị trả vềchính là giá trị của accumulator sau lần gọi hàm callback cuối cùng. Ứng dụngGiả sử rằng chúng ta có một mảng đại diện cho danh sách mua sắm của mình và chúng ta muốn tìm tổng chi phí của tất cả các phần tử trong đó trong trường hợp này, chúng ta có thể sử dụng hàm 7 mảng js.Ta lấy một ví dụ đơn giản về hàm 7 và xem nó hoạt động như thế nào.
Cách hoạt động của reduce() trong Javascript.Xem đoạn mã sau
7 tham số là một hàm với 4 tham số. Bây giờ, chúng ta hãy xem một bảng mô tả cho biết điều gì đang xảy ra trên mỗi lần lặp lại.
second call third callfourth call
Giá trị được trả về bởi
Không truyền giá trị initialValue cho hàm reduce() Nếu bạn không chuyển giá trị ban đầu, reducer sẽ giả định giá trị đầu tiên trong mảng của bạn làm giá trị ban đầu. Điều này hoạt động tốt trong một số ví dụ vì chúng tôi đã thêm danh sách các số.Output
Giá trị được trả về bởi
Không truyền giá trị initialValue cho hàm reduce() Nếu bạn không chuyển giá trị ban đầu, reducer sẽ giả định giá trị đầu tiên trong mảng của bạn làm giá trị ban đầu. Điều này hoạt động tốt trong một số ví dụ vì chúng tôi đã thêm danh sách các số. OutputTrong ví dụ này, bạn có thể thấy rằng chúng ta chưa chuyển giá trị ban đầu vào hàm 7. Nó nhận phần tử đầu tiên làm giá trị ban đầu và bắt đầu reducing và sẽ cộng tất cả các phần tử và trả về một giá trị duy nhất làm đầu ra.
Giá trị được trả về bởi
Không truyền giá trị initialValue cho hàm reduce()
Giá trị được trả về bởi 0Không truyền giá trị initialValue cho hàm reduce()Nếu bạn không chuyển giá trị ban đầu, reducer sẽ giả định giá trị đầu tiên trong mảng của bạn làm giá trị ban đầu. Điều này hoạt động tốt trong một số ví dụ vì chúng tôi đã thêm danh sách các số. Output 1Trong ví dụ này, bạn có thể thấy rằng chúng ta chưa chuyển giá trị ban đầu vào hàm 7. Nó nhận phần tử đầu tiên làm giá trị ban đầu và bắt đầu reducing và sẽ cộng tất cả các phần tử và trả về một giá trị duy nhất làm đầu ra.Truyền một giá trị initialValue cho hàm reduce()Nếu chúng ta chuyển giá trị ban đầu làm đối số, thì nó sẽ tự định vị là giá trị đầu tiên và sau đó nó sẽ bắt đầu reducing. Trong ví dụ này, bạn có thể thấy rằng chúng ta đã chuyển giá trị ban đầu là 29 vào hàm reduce(). Điều đó có nghĩa là nó nhận 29 làm giá trị ban đầu và bắt đầu reducing và sẽ cộng tất cả các phần tử, bao gồm cả 29 và trả về một giá trị duy nhất dưới dạng đầu ra. Nếu bạn thấy trong đầu ra, thì bạn có thể xác minh rằng nó đã thêm 29 giá trị trong đầu ra cuối cùng.index và array. 2Giá trị trả về của hàm const data = [5, 10, 15, 20, 25]; const res = data.reduce((total,currentValue) => { return total + currentValue; }); console.log(res); // 75 7 được gán cho data = [2, 4, 6, 8, 10] const reducer = (accumulator, currentValue, currentIndex, array) => accumulator + currentValue result = data.reduce(reducer) console.log(result) 6, giá trị của nó được giữ lại qua mỗi lần lặp trong toàn mảng và chắc chắn trở thành giá trị kết quả cuối cùng, duy nhất.TypeError: Reduce() của một mảng trống và không có giá trị khởi tạo ban đầu initialValue. 3Để kiểm đếm số lần xuất hiện của mỗi item trong một mảng, giá trị ban đầu của chúng ta phải là một đối tượng rỗng, không phải là một mảng trống. Vì chúng ta sẽ trả về đối tượng, nên bây giờ chúng ta có thể lưu trữ các cặp key-value trong data. Ở lần đầu tiên, chúng ta cần tên của key là giá trị hiện tại và cho nó giá trị là 1, Chúng ta muốn số lượng mỗi con số tăng lên nếu chúng lặp lại. Để làm điều đó ở lần lặp thứ 2 chúng ta sẽ check nếu data đã có key của giá trị hiện tại thì giá trị của key đó sẽ tăng thêm 1, nếu không có thì sẽ tạo key đó với giá trị là 1. Loại bỏ các item trùng lặp trong một mảngArray.reduce() là một hàm hữu ích khi chúng ta phải loại bỏ các item trùng lặp trong mảng. Chúng ta có thể sử dụng một hàm array.push() và array.indexOf() với hàm array.reduce() để loại bỏ các mục trùng lặp khỏi mảng. 4Nhóm các đối tượng theo một thuộc tínhChúng ta có thể nhóm các đối tượng theo thuộc tính của nó bằng phương thức array.reduce(). 5Output 6Trong ví dụ này, chúng ta đã nhóm đối tượng bằng cách sử dụng thuộc tính "enrollment". Trong đầu ra, bạn có thể thấy rằng enrollment 40 có hai đối tượng và 60 có một đối tượng. Đối tượng trả về có thuộc tính được nhóm và giá trị là đối tượng theo thuộc tính đó. Kết luậnMột lỗi phổ biến khác là quên trả lại giá trị. Bạn phải trả về một cái gì đó để một hàm reduce() hoạt động. Luôn kiểm tra kỹ và đảm bảo rằng bạn đang trả lại giá trị mà bạn muốn. Hy vọng qua bài viết này, bạn hiểu hơn về Reduce và ứng dụng nó nhiều hơn trong các project của mình, giúp code trở nên rõ ràng, dễ hiểu hơn. |