Phương thức reduce
Phương thức reduce thu gọn một mảng thành
một giá trị duy nhất (reduce). Ví dụ,
với phương thức này có thể dễ dàng tìm tổng
các phần tử của mảng (tức là mảng sẽ được thu gọn
về một giá trị - tổng các phần tử).
Tham số đầu tiên của phương thức reduce nhận
một hàm, hàm này sẽ được thực thi tuần tự
cho từng phần tử của mảng, bắt đầu từ phần tử đầu tiên.
Vào hàm này có thể truyền 4 tham số.
Nếu các tham số này tồn tại (chúng không bắt buộc),
thì vào tham số đầu tiên sẽ tự động được đưa vào kết quả trung gian, vào tham số thứ hai là phần tử
của mảng, vào tham số thứ ba - số thứ tự của nó trong mảng (chỉ số),
và vào tham số thứ tư - chính mảng đó.
Kết quả trung gian - là một biến,
trong đó sẽ tích lũy giá trị
mà phương thức reduce sẽ trả về khi
duyệt qua tất cả các phần tử của mảng. Ví dụ,
vào đó có thể tích lũy tuần tự tổng
các phần tử của mảng: đầu tiên đặt phần tử đầu tiên,
ở lần lặp tiếp theo sẽ là
tổng của phần tử thứ nhất và thứ hai, ở lần lặp tiếp theo
- tổng của phần tử thứ nhất, thứ hai và thứ ba.
Và cứ thế, cho đến khi mảng kết thúc.
Hàm mà reduce nhận,
phải trả về giá trị mới của kết quả trung gian.
Tham số thứ hai của phương thức reduce chỉ định
giá trị khởi đầu của kết quả trung gian.
Nếu không chỉ định nó, thì nó sẽ bằng phần tử đầu tiên
của mảng, và việc xử lý các phần tử sẽ bắt đầu
từ phần tử thứ hai.
Cú pháp
mảng.reduce(function(kết quả trung gian, phần tử, chỉ số, mảng) {
return kết quả trung gian mới;
}, giá trị khởi đầu);
Ví dụ
Tìm tổng các phần tử của mảng:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(sum, elem) {
return sum + elem;
}, 0);
console.log(res);
Kết quả thực thi mã:
21
Ví dụ
Hãy tìm tổng tất cả các số dương của mảng:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(sum, elem) {
if (elem >= 0) {
return sum + elem;
} else {
return sum;
}
}, 0);
console.log(res);
Kết quả thực thi mã:
10