Phương thức JavaScript Array ReduceRight () thực thi một hàm giảm thiểu trên mỗi phần tử của mảng và áp dụng nó với một bộ tích lũy.
Cú pháp của reduceRight()
phương thức là:
arr.reduceRight(callback(accumulator, currentValue), initialValue)
Ở đây, arr là một mảng.
Tham số ReduceRight ()
Các reduceRight()
phương pháp có trong:
- callback - Hàm thực thi trên từng phần tử mảng. Nó có:
- bộ tích lũy - Nó tích lũy các giá trị trả về của lệnh gọi lại. Nó
initialValue
dành cho cuộc gọi đầu tiên nếu được cung cấp, - currentValue - Phần tử hiện tại đang được truyền từ mảng.
- bộ tích lũy - Nó tích lũy các giá trị trả về của lệnh gọi lại. Nó
- InitialValue (tùy chọn) - Một giá trị sẽ được chuyển cho
callback()
lần gọi đầu tiên. Nếu không được cung cấp, phần tử cuối cùng hoạt động như bộ tích lũy trong lần gọi đầu tiên vàcallback()
sẽ không thực thi trên đó.
Lưu ý: Việc gọi reduceRight()
trên một mảng trống không có giá trị khởi tạo sẽ được ném ra TypeError
.
Giá trị trả về từ ReduceRight ()
- Trả về giá trị kết quả sau khi giảm mảng.
Ghi chú :
reduceRight()
thực hiện chức năng đã cho cho mỗi giá trị từ phải sang trái.reduceRight()
không thay đổi mảng ban đầu.- Nó hầu như luôn luôn an toàn hơn để cung cấp
initialValue
.
Ví dụ 1: Tổng tất cả các giá trị của mảng
const numbers = (1, 2, 3, 4, 5, 6); function sum_reducer(accumulator, currentValue) ( return accumulator + currentValue; ) let sum = numbers.reduceRight(sum_reducer); console.log(sum); // 21 // using arrow function let summation = numbers.reduceRight( (accumulator, currentValue) => accumulator + currentValue ); console.log(summation); // 21
Đầu ra
21 21
Ví dụ 2: Trừ các số trong mảng
const numbers = (50, 300, 20, 100, 1800); // subtract all numbers from last number // since 1st element is called as accumulator rather than currentValue // 1800 - 100 - 20 - 300 - 50 let difference = numbers.reduceRight( (accumulator, currentValue) => accumulator - currentValue ); console.log(difference); // 1330 const expenses = (1800, 2000, 3000, 5000, 500); const salary = 15000; // function that subtracts all array elements from given number // 15000 - 500 - 5000 - 3000 - 2000 - 1800 let remaining = expenses.reduceRight( (accumulator, currentValue) => accumulator - currentValue, salary ); console.log(remaining); // 2700
Đầu ra
1330 2700
Ví dụ này giải thích rõ ràng sự khác biệt giữa việc chuyển giá trị ban đầu và không truyền giá trị ban đầu.
Ví dụ 3: Tạo các hàm tổng hợp
// create composite functions const composite = (… args) => (initialArg) => args.reduceRight((acc, fn) => fn(acc), initialArg); const sqrt = (value) => Math.sqrt(value); const double = (value) => 2 * value; const newFunc = composite(sqrt, double); // ( 32 * 2 ) ** 0.5 let result = newFunc(32); console.log(result); // 8
Đầu ra
số 8
Chúng ta biết rằng thành phần hàm là cách thức mà kết quả từ một hàm được chuyển sang một hàm khác. Việc thực thi diễn ra từ phải sang trái, vì vậy chúng ta có thể tận dụng reduceRight()
chức năng này.
Trong ví dụ này, chúng ta đã tạo một composite()
hàm nhận vào một số lượng đối số tùy ý. Hàm này trả về một hàm khác nhận vào initialArg
và trả về giá trị này đã giảm bằng cách áp dụng nó đối với các hàm đã cho từ phải sang trái.
Đề xuất đọc: Mảng JavaScript giảm ()