paint-brush
Giảm bớt Javascript: Nắm vững kiến thức cơ bảntừ tác giả@iggy
1,685 lượt đọc
1,685 lượt đọc

Giảm bớt Javascript: Nắm vững kiến thức cơ bản

từ tác giả Ignatius Sani4m2023/01/11
Read on Terminal Reader

dài quá đọc không nổi

Phương thức mảng Javascript rút gọn là một thành phần thiết yếu của lập trình chức năng. Nó lấy một mảng và rút gọn nó thành một giá trị. Điều này được thực hiện bằng cách chạy hàm gọi lại lần lượt trên từng phần tử của mảng. Kiến thức cơ bản về ngôn ngữ là cần thiết để hiểu bài viết này và thực hiện phương pháp một cách hiệu quả.
featured image - Giảm bớt Javascript: Nắm vững kiến thức cơ bản
Ignatius Sani HackerNoon profile picture

Hôm nay chúng ta sẽ nói về phương thức rút gọn mảng trong Javascript và cách chúng ta có thể sử dụng nó để giảm một mảng thành một giá trị duy nhất. Tất cả các đoạn mã được viết bằng ngôn ngữ Javascript. Kiến thức cơ bản về ngôn ngữ là cần thiết để hiểu bài viết này và thực hiện phương pháp một cách hiệu quả.

Phương pháp rút gọn Javascript là gì?

Phương thức mảng Javascript rút gọn là một thành phần thiết yếu của lập trình hàm lấy một mảng và rút gọn nó thành một giá trị. Điều này được thực hiện bằng cách chạy hàm gọi lại lần lượt trên từng phần tử của mảng, chuyển kết quả tính toán trên phần tử trước nó.


 const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce((accumulator, currentValue) => accumulator + currentValue, initialValue) console.log(sumWithInitial); // expected output: 10


Đoạn mã trên là một dãy số; khi chúng ta gọi phương thức rút gọn trên nó, nó sẽ lấy toàn bộ mảng và chỉ trả về một giá trị là 10.


Hiểu các tham số và đối số Javascript “giảm”

Điều quan trọng là phải hiểu rất cụ thể về các tham số Javascript “giảm” là gì nếu chúng ta phải sử dụng đúng phương pháp. Dưới đây tôi đã đánh dấu các tham số này; chúng ta sẽ xem xét chúng lần lượt, rồi cuối cùng đặt mọi thứ lại với nhau để hiểu ý nghĩa của nó.


  1. chức năng gọi lại
  2. giá trị ban đầu


Chức năng gọi lại

Hàm này chạy trên từng mục trong mảng. Trong lần thực thi gọi lại Fn tiếp theo, giá trị trả về của nó được thay đổi thành giá trị của đối số bộ tích lũy. Giá trị trả về thay đổi thành reduce(), cho lần gọi cuối cùng.


Các tham số sau được cung cấp khi gọi hàm:


  1. bộ tích điện
  2. giá trị hiện tại
  3. hiện tại Index
  4. mảng


ắc quy

Đây là kết quả của cuộc gọi cuối cùng để gọi lại Fn, về giá trị. Nếu được cung cấp, giá trị ban đầu được sử dụng trong lần gọi đầu tiên; nếu không, mảng [0] được sử dụng.


giá trị hiện tại

Đây là giá trị của phần tử hiện tại. Nếu một giá trị ban đầu được cung cấp, giá trị của mảng trên chỉ mục 0 (mảng [0]) sẽ được trả về trong lần gọi đầu tiên; nếu không, chỉ mục 1 (mảng [1]) sẽ được trả về.


Chỉ số hiện tại

Đây là vị trí chỉ mục của giá trị hiện tại của mảng. Nếu giá trị ban đầu được đưa ra trong lần gọi đầu tiên, thì vị trí của nó sẽ nằm trên chỉ mục 0; nếu không, nó sẽ ở trên chỉ số 1.


Mảng

Đây đơn giản là mảng trong đó phương thức reduce() được sử dụng.


giá trị ban đầu

Một giá trị được sử dụng để khởi tạo bộ tích lũy trong lần gọi lại đầu tiên. Nếu giá trị khởi tạo được cung cấp, hàm gọi lạiFn bắt đầu chạy với giá trị hiện tại được đặt thành phần tử đầu tiên của mảng. Nếu giá trị khởi tạo bị bỏ qua, bộ tích lũy được đặt thành giá trị đầu tiên của mảng và hàm gọi lạiFn bắt đầu chạy với giá trị hiện tại được đặt thành giá trị thứ hai của mảng. Nếu mảng trống trong trường hợp này (nghĩa là không có mục ban đầu nào để trả về dưới dạng bộ tích lũy), thì sẽ xảy ra lỗi.


Đặt mọi thứ lại với nhau

giảm (Hàm (bộ tích lũy, giá trị hiện tại, chỉ mục hiện tại, mảng) { /* … */ }, giá trị ban đầu)

Sự kết hợp của tất cả các tham số này sẽ trông giống như đoạn mã trên.


Phương thức Javascript "giảm" hoạt động như thế nào?

Hãy tìm hiểu sâu hơn về phương pháp Javascript rút gọn này và xem điều gì đang xảy ra đằng sau hậu trường.


 const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; const sumWithInitial = array1.reduce( (accumulator, currentValue) => accumulator + currentValue, initialValue );


Tất cả những gì mà phương thức reduce của Javascript thực hiện là lặp qua mục đó và mỗi khi nó được lặp qua, chúng tôi trả về một mục riêng lẻ và chúng tôi nhận được giá trị trước đó mà chúng tôi trả về từ reduce(). Nếu nó là mục đầu tiên trong hàm reduce(), chúng ta chỉ nhận được giá trị 0 vì đó là giá trị mặc định của chúng ta. Ví dụ, nếu chúng ta thay đổi mặc định thành 50, nó sẽ ảnh hưởng đến mảng.


Chúng tôi lấy số 0 hoặc số mặc định và thêm nó vào mục đầu tiên của chúng tôi; chúng tôi sẽ nhận được tổng số sẽ là 1 trong mã trước đó. Chúng tôi làm điều đó một lần nữa cho mục tiếp theo, đó là 2. Chúng tôi thêm 1 + 2 và nhận được 3; chúng tôi tiếp tục quá trình này cho đến khi chúng tôi nhận được mục cuối cùng.



bộ tích điện

giá trị hiện tại

mục lục

Giá trị trả về

cuộc gọi đầu tiên

0

1

0

1

cuộc gọi thứ 2

1

2

1

3

cuộc gọi thứ 3

3

3

2

6

cuộc gọi thứ 4

6

4

3

10


Bảng trên cung cấp một bức tranh rõ ràng hơn về những gì xảy ra mỗi khi chúng ta sử dụng phương pháp này. Lưu ý rằng kết quả này sẽ thay đổi tùy thuộc vào giá trị ban đầu.


Phần kết luận

Trên một lưu ý cuối cùng, giảm Javascript là một phương pháp lặp đi lặp lại. Nó thu thập tất cả các mục của mảng thành một giá trị duy nhất bằng cách áp dụng hàm gọi lại "bộ giảm tốc" cho từng phần tử theo thứ tự chỉ số tăng dần. Giá trị trả về của callbackFn luôn được cung cấp dưới dạng bộ tích lũy khi callbackFn được gọi lại. Giảm trả về giá trị trả về của nó từ giá trị cuối cùng của bộ tích lũy, là giá trị được trả về từ hàm gọi lại Fn ở lần lặp cuối cùng của mảng ().


Mặc dù chức năng được cung cấp dưới dạng gọi lại-Fn có thể sửa đổi, nhưng mảng mà nó được gọi, reduce() thì không. Tuy nhiên, hãy lưu ý rằng độ dài của mảng được giữ nguyên trước khi thực hiện lệnh gọi lại Fn ban đầu.