Reduce trong JavaScript: Phương thức mạnh mẽ để xử lý mảng

Reduce trong JavaScript: Phương thức mạnh mẽ để xử lý mảng

Khám phá phương thức reduce() trong JavaScript: một công cụ mạnh mẽ và đa dụng để xử lý mảng. Hiểu cách hoạt động, các ví dụ sử dụng và lưu ý quan trọng khi sử dụng phương thức này.
25/02/2024
3,464 Lượt xem

Giới thiệu về phương thức reduce()

Phương thức reduce() là một phương thức của đối tượng Array trong JavaScript. Nó được sử dụng để chạy một hàm lên từng phần tử của mảng (từ trái sang phải) với một biến tích lũy. Kết quả trả về là một giá trị duy nhất, có thể là số, chuỗi hoặc bất kỳ đối tượng nào.

Cú pháp của phương thức reduce()

Cú pháp của phương thức reduce() như sau:

 array.reduce(callback, initialValue) 

Trong đó:

  • callback: là một hàm được gọi cho mỗi phần tử trong mảng, đặc biệt hơn là nó sẽ nhận vào 4 tham số: accumulator, currentValue, currentIndex, và array.
  • initialValue: là giá trị khởi tạo cho biến tích lũy (accumulator). Nếu không cung cấp giá trị này, biến tích lũy sẽ được khởi tạo bằng phần tử đầu tiên của mảng, và lần lặp đầu tiên sẽ bắt đầu từ phần tử thứ hai.

Cách hoạt động của phương thức reduce()

Để hiểu rõ hơn về cách hoạt động của phương thức reduce(), chúng ta hãy xem qua một ví dụ đơn giản:

 const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // Output: 15 

Trong ví dụ trên, phương thức reduce() được sử dụng để tính tổng của các phần tử trong mảng numbers. Hàm callback nhận hai tham số: accumulatorcurrentValue. Mỗi lần lặp, giá trị của accumulator sẽ được cộng với currentValue và kết quả sẽ trở thành giá trị mới của accumulator cho lần lặp tiếp theo.

Lưu ý rằng, trong ví dụ này, chúng ta đã cung cấp giá trị khởi tạo initialValue là 0. Điều này đảm bảo rằng biến tích lũy được khởi tạo với giá trị 0 và lần lặp đầu tiên sẽ bắt đầu từ phần tử đầu tiên của mảng.

Các ví dụ sử dụng phương thức reduce()

Phương thức reduce() có thể được sử dụng để giải quyết nhiều vấn đề khác nhau, không chỉ đơn giản là tính tổng. Dưới đây là một số ví dụ minh họa sự đa dụng của phương thức này:

Làm phẳng mảng nhiều chiều (Flatten nested arrays)

 const nestedArray = [1, [2, 3], [4, [5, 6]]]; const flattenedArray = nestedArray.reduce((accumulator, currentValue) => { return accumulator.concat(Array.isArray(currentValue) ? currentValue.reduce((a, b) => a.concat(b), []) : currentValue); }, []); console.log(flattenedArray); // Output: [1, 2, 3, 4, 5, 6] 

Trong ví dụ này, phương thức reduce() được sử dụng để làm phẳng mảng nhiều chiều thành một mảng 1 chiều. Nếu giá trị hiện tại là một mảng, chúng ta sẽ sử dụng reduce() để làm phẳng nó và nối các phần tử vào mảng tích lũy. Nếu giá trị hiện tại không phải là mảng, chúng ta sẽ đơn giản chỉ nối nó vào mảng tích lũy.

Nhóm các phần tử giống nhau trong mảng

 const items = ['apple', 'banana', 'cherry', 'apple', 'orange', 'banana']; const groupedItems = items.reduce((accumulator, currentValue) => { if (accumulator[currentValue]) { accumulator[currentValue]++; } else { accumulator[currentValue] = 1; } return accumulator; }, {}); console.log(groupedItems); // Output: { apple: 2, banana: 2, cherry: 1, orange: 1 } 

Trong ví dụ này, phương thức reduce() được sử dụng để nhóm các phần tử giống nhau trong mảng và đếm số lần xuất hiện của chúng. Nếu phần tử hiện tại đã tồn tại trong đối tượng tích lũy, chúng ta sẽ tăng giá trị tương ứng lên 1. Nếu nó chưa tồn tại, chúng ta sẽ tạo một thuộc tính mới với giá trị ban đầu là 1.

Tạo đối tượng từ một mảng

 const people = [ { name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }, { name: 'Charlie', age: 35 } ]; const peopleObj = people.reduce((accumulator, currentValue) => { accumulator[currentValue.name] = currentValue.age; return accumulator; }, {}); console.log(peopleObj); // Output: { Alice: 25, Bob: 30, Charlie: 35 } 

Trong ví dụ này, phương thức reduce() được sử dụng để tạo một đối tượng từ một mảng các đối tượng. Chúng ta duyệt qua từng phần tử của mảng và tạo một thuộc tính mới trong đối tượng tích lũy với tên là tên của người đó và giá trị là tuổi của họ.

Một số lưu ý khi sử dụng phương thức reduce()

Khi sử dụng phương thức reduce() trong JavaScript, có một số lưu ý quan trọng cần lưu tâm:

Không sử dụng reduce() với mảng rỗng nếu không cung cấp initialValue

Nếu bạn sử dụng phương thức reduce() với một mảng rỗng và không cung cấp giá trị khởi tạo (initialValue), JavaScript sẽ gặp lỗi. Điều này là do không có phần tử nào để khởi tạo biến tích lũy (accumulator), và vòng lặp sẽ không bao giờ được thực hiện.

Đảm bảo tính dây chuyền khi thực hiện các phép tính

Khi sử dụng phương thức reduce() để thực hiện các phép tính, bạn cần đảm bảo rằng kết quả của mỗi lần lặp là một giá trị có thể tính toán tiếp trong lần lặp tiếp theo. Điều này có nghĩa là bạn cần trả về kết quả của phép tính trong hàm callback, chứ không phải chỉ thực hiện phép tính mà không trả về giá trị.

Hiểu rõ về giá trị khởi tạo (initialValue)

Giá trị khởi tạo (initialValue) đóng vai trò quan trọng trong phương thức reduce(). Nếu bạn không cung cấp giá trị này, biến tích lũy sẽ được khởi tạo bằng phần tử đầu tiên của mảng, và lần lặp đầu tiên sẽ bắt đầu từ phần tử thứ hai. Điều này có thể dẫn đến kết quả không mong muốn nếu bạn không hiểu rõ cách hoạt động của phương thức này.

Kết luận

Phương thức reduce() trong JavaScript là một công cụ mạnh mẽ và đa dụng để xử lý mảng. Nó cho phép bạn thực hiện nhiều tác vụ khác nhau trên mảng, từ tính tổng đến làm phẳng mảng nhiều chiều, nhóm phần tử giống nhau và tạo đối tượng từ mảng. Mặc dù có sự linh hoạt này, nhưng bạn cần hiểu rõ cách hoạt động của phương thức reduce() và những lưu ý quan trọng khi sử dụng nó để tránh gặp phải các lỗi hoặc kết quả không mong muốn.

Bằng cách thực hành và áp dụng phương thức reduce() trong các dự án thực tế, bạn sẽ nâng cao kỹ năng sử dụng và hiểu sâu hơn về tính năng mạnh mẽ của nó. Hãy tiếp tục khám phá và trau dồi kỹ năng JavaScript của bạn để trở thành một lập trình viên giỏi hơn!

Các bạn có thể tham khảo thêm nguồn khác:

JavaScript Array reduce() Method - W3Schools

The reduce () method returns a single value: the function's accumulated result. The reduce () method does not execute the function for empty array elements. The reduce () method does not change the or>

Cách dùng hàm reduce trong javascript qua các ví dụ khá hay

Hàm Array reduce () trong Javascript Trong bài này mình sẽ giới thiệu hàm array reduce trong javascript, đây là một method được thêm vào mảng kể từ phiên bản ES6. Hàm reduce sẽ duyệt qua từng phần tử>

Reduce trong javascript

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>

Array.prototype.reduce() - JavaScript | MDN - Mozilla

The reduce () method is an iterative method. It runs a "reducer" callback function over all elements in the array, in ascending-index order, and accumulates them into a single value. Every time, the r>

Tìm hiểu về phương thức Reduce trong Javascript

Hàm reduce () quay vòng qua từng giá trị trong mảng giống như trong vòng lặp for. Trong ví dụ cụ thể này, ta muốn thêm currentValue vào total. Phép tính được lặp lại liên tục cho mỗi giá trị trong một>

Javascript: reduce() trong javascript qua ví dụ đơn giản ????

Trong video này mình sẽ giải thích cách hoạt động cũng như sử dụng hàm reduce() qua các ví dụ như:- Tính tổng mảng số - Tìm từ dài nhất - Chuyển mảng sang ...>

Reduce Javascript là gì? Giới thiệu hàm reduce trong Javascript

Sep 17, 2021Method Reduce () trong js sẽ thực thi một "reducer" callback function do chúng ta cung cấp, trên mỗi phần tử của mảng, nó sẽ chuyển giá trị mà chúng ta return của phần tử trước cho phần tử>

Array reduce() trong JavaScript | 208 bài học Javascript miễn phí hay nhất

Array reduce () trong JavaScript Miêu tả Phương thức array reduce () trong Javascript áp dụng một hàm đồng thời với hai giá trị của mảng (từ trái qua phải) khi để giảm nó tới một giá trị đơn. Cú pháp>

Hàm reduce trong Javascript: Cách sử dụng và các ví dụ đơn giản trong ...

Reduce JavaScript là một method có trong Array.prototype được giới thiệu từ ES6 hay còn gọi là ECMAScript 5, và hiện tại support trên các browser hiện đại. Và một điều thú vị nữa là, tipjs nhận được n>

Giải thích về reduce() trong JavaScript

Giải thích về reduce() trong JavaScript Trong bài viết này, mình sẽ giúp bạn tìm hiểu về căn bản của phương thức reduce() trong JavaScript qua các ví dụ từ đơn giản đến phức tạp.>

Array reduce trong JavaScript | Laptrinhcanban.com

Dec 15, 2021Array reduce trong JavaScript Phương thức Array reduce hoạt động theo cơ chế: Lấy từng phần tử trong mảng theo thứ tự từ đầu mảng Chuyển chúng đến đối số của phương thức là một hàm callbac>

Sử dụng map, filter và reduce trong Javascript

Reduce Cuối cùng cũng không kém phần quan trọng, reduce nhận vào 1 mảng và tính toán thành một giá trị duy nhất. Ví dụ, với một dãy số bạn có thể dễ dàng tính được trung bình của tất cả các giá trị. S>

Cách sử dụng .reduce () trong JavaScript

Hàm .reduce () hoạt động như thế nào? Về cơ bản, .reduce () chấp nhận một hàm giảm thiểu mà chúng tôi cung cấp, hàm này sẽ được thực thi đối với từng mục trong mảng đã cho. Kết quả sẽ được chuyển cho>

reduce() trong JavaScript có thể làm được những gì - Trang Chủ

reduce () trong JavaScript có thể làm được những gì Thứ Bảy, 21/11/2020 Tram Ho Hi xin chào các bạn, tiếp tục chuỗi chủ để về JavaScript hôm nay chúng ta sẽ cùng tìm hiểu một method có thể coi là loằn>

Hàm Reduce () trong JavaScript

Hàm Reduce () trong JavaScript Các chi tiết của reduce () Hàm trong JavaScript reduce () là một phương thức quan trọng khác của một mảng. reduce () thực hiện một hàm gọi lại trên tất cả các mục của mả>

Ứng dụng của Reduce trong JavaScript - Complete JavaScript

Dec 19, 2021JavaScript Reduce là một phương thức có sẵn của array, được sử dụng để gọi 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. Kết quả trả về là một giá trị duy nhấ>

Javascript reduce nâng cao || Array.Prototype.Reduce() Tutorial

Reduce Javascript là gì? reduce javascript thay thế Higher Order Function Ví dụ về reduce javascript Tính tổng của các giá trị trong một Reduce object JavaScript convert nhiều array to một array fitle>

Cách Dùng Map, Reduce, Filter Trong Javascript

Oct 6, 2021Hàm reduce () Trường hợp chúng ta cần tính tổng khối lượng các con vật. Nếu sử dụng for-loop chúng ta sẽ làm như sau: let total_weight = 0; for (let i = 0; i < animals.length; i++) { total_>

Các hàm: map, filter, reduce trong Javascript

Aug 28, 2021Nhìn chung, chúng ta có thể hiểu một cách đơn giản nhất về các hàm được nêu trong bài viết này một cách ngắn gọn như sau: map: không làm thay đổi số lượng phần tử, làm thay đổi chất lượng>

Sử dụng map(), filter(), và reduce() trong JavaScript - Trang Chủ

Reduce () Cuối cùng là hàm .reduce (), là hàm gây nhiều khó khăn nhất nếu không hiểu rõ cách dùng. Tên của hàm chỉ ra là chúng ta giảm số lượng các phần tử trong mảng thành 1 giá trị duy nhất. Nếu hàm>

Map, filter, reduce trong JavaScript | GMO-Z.com Vietnam Lab Center

29 June 2018. javascript. Tweet. Ngay cả khi bạn không phải một lập trình viên sử dụng ngôn ngữ JavaScript thì cũng có thể bạn đã sử dụng 3 hàm map, filter, reduce ở những ngôn ngữ khác. Lý do đơn giả>

Techmaster Việt Nam - Học là có việc

Hàm reduce () Hãy đến với bài toán thứ 3: bạn cần tính tổng trọng lượng của các con vật. Hãy bắt đầu với for-loop: let total_weight = 0; for (let i = 0; i < animals.length; i++) { total_weigth += anim>

Sử dụng map, filter và reduce để xử lý mảng trong Javascript

Hàm reduce () Hãy đến với bài toán thứ 3: bạn cần tính tổng trọng lượng của các con vật. Hãy bắt đầu với for-loop: let total_weight = 0; for (let i = 0; i < animals.length; i++) { total_weigth += anim>

Javascript: 15 ví dụ sử dụng map, reduce và filter | Vuilaptrinh | TopDev

Echo ra bảng giá trị dữ liệu. Tìm và thay thế key-value trong một mảng object. Union hay mảng. Lấy kết quả giao nhau giữa 2 mảng. Tác giả: Lưu Bình An. Nếu đang muốn tìm những ví dụ thực tế sử dụng ma>

Cách sử dụng map (), filter () và Reduce () trong JavaScript

Trong hướng dẫn này, ta sẽ hiểu sâu hơn về lập trình hàm trong JavaScript bằng cách xem xét filter, map và thu reduce. Lặp lại với for. Ta sử dụng vòng lặp for để lặp lại mọi mục trong một mảng. Thông>

Vọc vạch Reduce trong JavaScript | Svenit

Trong Javascript chúng ta có map, filter và reduce , tất cả các chức năng khi đưa ra một danh sách ban đầu sau biến nó thành cái gì đó khác , nhưng vẫn giữ nguyên list gốc của nó .>

Xử lý danh sách với Map, Filter & Reduce trong Javascript

Xử lý danh sách với Map, Filter & Reduce trong Javascript. Tiến Hoàng 08/04/2019 JavaScript, Web Development No Comments. Khi làm việc với Javascript, chắc hẳn bạn sẽ có những lúc trải qua tình huống>

Array reduceRight() trong Javascript - Freetuts

Cú pháp hàm này cũng không khác gì hảm reduce. Bài viết này được đăng tại [free tuts .net] Cú pháp: 1. array.reduceRight (function(total, currentValue, currentIndex, arr), initialValue) Trong đó: tota>

Vòng lặp forEach trong JavaScript | Học JavaScript

Trong JavaScript, để có thể duyệt mảng thì forEach là một hàm rất hay. Vậy hàm forEach trong JavaScript cụ thể là như thế nào và cách ... Ngoài forEach, thì JavaScript còn cung cấp một số phương thức>


Tags: