Vòng lặp for
được sử dụng để lặp lại một mảng. Chúng ta có thể sử dụng nó để cộng tất cả các số trong một mảng và lưu trữ nó trong một biến
const array = [1, 2, 3, 4];
let sum = 0;
for [let i = 0; i < array.length; i++] {
sum += array[i];
}
console.log[sum];
Ta khởi tạo biến sum
là 0
để lưu kết quả và sử dụng vòng lặp for
để thăm từng phần tử và cộng chúng vào tổng của mảng
Sử dụng Phương thức reduce[]
để tính tổng một mảng trong một mảng JavaScript
Phương thức reduce[]
lặp lại mảng và gọi hàm rút gọn để lưu trữ giá trị tính toán mảng bởi hàm trong bộ tích lũy. Bộ tích lũy là một biến được ghi nhớ trong suốt tất cả các lần lặp để lưu trữ kết quả tích lũy của việc lặp qua một mảng. Chúng ta có thể sử dụng điều này để lặp qua mảng, thêm giá trị của phần tử vào bộ tích lũy và lấy tổng của mảng
P. S. Đương nhiên, công thức là giải pháp nhanh nhất. Nó chỉ sử dụng 3 thao tác cho bất kỳ số nào
function sumTo[n] { /*.. your code .. */ }
alert[ sumTo[100] ]; // 5050
1. Toán học giúpBiến thể vòng lặp là biến thể thứ hai về tốc độ. Trong cả biến thể đệ quy và vòng lặp, chúng tôi tính tổng các số giống nhau. Nhưng đệ quy liên quan đến các cuộc gọi lồng nhau và quản lý ngăn xếp thực thi. Điều đó cũng tốn tài nguyên, vì vậy nó chậm hơn
P. P. S. Một số công cụ hỗ trợ tối ưu hóa "cuộc gọi đuôi". nếu một cuộc gọi đệ quy là cuộc gọi cuối cùng trong hàm, không có phép tính nào khác được thực hiện, thì hàm bên ngoài sẽ không cần tiếp tục thực thi, vì vậy công cụ không cần nhớ ngữ cảnh thực thi của nó. Điều đó loại bỏ gánh nặng cho bộ nhớ. Nhưng nếu công cụ JavaScript không hỗ trợ tối ưu hóa cuộc gọi đuôi [hầu hết trong số họ không hỗ trợ], sẽ có lỗi. đã vượt quá kích thước ngăn xếp tối đa, vì thường có giới hạn về tổng kích thước ngăn xếp
Hàm chúng tôi đã chuyển đến Set. Phương thức forEach được gọi với từng phần tử trong đối tượng Set
Trên mỗi lần lặp, chúng tôi thêm số vào giá trị của sum
và gán lại biến cho kết quả
Lưu ý rằng biến sum
được khai báo bằng từ khóa let
Không thể gán lại các biến được khai báo bằng cách sử dụng sum
0
Ngoài ra, bạn có thể sử dụng vòng lặp sum
1
Lấy Tổng của tất cả các số trong Tập hợp bằng cách sử dụng sum
1
Để có được tổng của tất cả các số trong một Set
- Khai báo một biến
sum
và khởi tạo nó thành0
- Sử dụng vòng lặp
sum
1 để lặp lại đối tượngSet
- Trên mỗi lần lặp, hãy thêm phần tử hiện tại vào biến
sum
cho. câu lệnh of được sử dụng để lặp qua các đối tượng có thể lặp lại như mảng, chuỗi, đối tượng sum
9, Set
và 0
1 và 0
2
Trên mỗi lần lặp, chúng tôi thêm phần tử Set
hiện tại vào biến sum
Sau lần lặp cuối cùng, biến sum
lưu trữ tổng
Một cách tiếp cận khác là chuyển đổi Set
thành một mảng và sử dụng Array. giảm phương pháp
Lấy tổng các số trong một Set
bằng cách sử dụng 0
8
Để có được tổng của các số trong một Set
- Chuyển đổi
Set
thành một mảng - Sử dụng phương thức
forEach[]
1 để lặp lại mảng - Trên mỗi lần lặp, thêm số vào bộ tích lũy và trả về kết quả
Chúng tôi đã sử dụng Mảng. từ phương thức để chuyển đổi Set
thành một mảng, vì vậy chúng ta có thể gọi phương thức forEach[]
1
Đối số thứ hai mà chúng ta chuyển đến hàm gọi lại là giá trị ban đầu cho biến forEach[]
4. Trong trường hợp của chúng tôi 0
Trên mỗi lần lặp, chúng tôi thêm số vào giá trị tích lũy và trả về kết quả
Giá trị tích lũy được chuyển đến hàm trên mỗi lần lặp lại cho đến khi tính tổng các phần tử
Bạn chọn cách tiếp cận nào là vấn đề sở thích cá nhân. Tôi sẽ sử dụng phương pháp forEach[]
6 vì tôi thấy nó khá trực tiếp và trực quan
Tham số accumulator
ban đầu được đặt thành 0
vì đó là những gì chúng tôi đã chuyển làm đối số thứ hai cho Mảng. phương pháp giảm []
Trên mỗi lần lặp, chúng tôi trả về tổng của accumulator
và phần tử mảng hiện tại
Sau lần lặp cuối cùng, biến sum
lưu tổng các số trong mảng
Nếu bạn phải tính tổng các mảng thường xuyên, hãy xác định một hàm có thể tái sử dụng
Hàm calculateSum[]
nhận một mảng làm tham số và tính tổng các số trong mảng
Bạn cũng có thể rút ngắn hàm mà chúng ta đã truyền cho phương thức reduce[]
bằng cách sử dụng câu lệnh return ngầm định
Hàm mũi tên trong ví dụ sử dụng trả về ngầm định
Một cách tiếp cận khác và có lẽ đơn giản hơn là sử dụng vòng lặp for...of
Lấy tổng của một dãy số bằng cách sử dụng vòng lặp for...of
Để lấy tổng của một dãy số
- Khai báo một biến
sum
và khởi tạo nó thành0
- Sử dụng vòng lặp
for...of
để lặp lại mảng - Trên mỗi lần lặp lại, gán lại biến
sum
thành giá trị hiện tại của nó cộng với giá trị của phần tử hiện tại
cho. câu lệnh of được sử dụng để lặp qua các đối tượng có thể lặp lại như mảng, chuỗi, đối tượng reduce
5, reduce
6 và reduce
7 và reduce
8
Lưu ý rằng chúng tôi đã khai báo biến sum
bằng từ khóa 0
0. Nếu chúng ta đã khai báo biến bằng cách sử dụng 0
1, chúng ta sẽ không thể gán lại nó
Trên mỗi lần lặp lại, chúng tôi gán lại biến sum
thành giá trị hiện tại của nó cộng với giá trị của phần tử hiện tại
Nếu bạn phải làm điều này thường xuyên, hãy trích xuất logic thành một hàm có thể sử dụng lại
Hàm calculateSum[]
nhận một mảng làm tham số, tính tổng các giá trị của nó và trả về kết quả
Bạn cũng có thể sử dụng phương pháp 0
4 để tính tổng của một mảng
Lấy tổng của một dãy số bằng cách sử dụng 0
4
Để lấy tổng của một dãy số
- Khai báo một biến
sum
mới và khởi tạo nó thành0
- Sử dụng phương thức
0
4 để lặp lại mảng - Trên mỗi lần lặp, gán lại giá trị của biến tổng thành giá trị hiện tại của nó cộng với phần tử mảng
Hàm chúng tôi đã chuyển đến Mảng. Phương thức forEach[] được gọi với từng phần tử trong mảng
Trên mỗi lần lặp, chúng tôi gán lại giá trị của biến sum
thành giá trị hiện tại của nó cộng với giá trị của phần tử mảng hiện tại
Biến sum
lưu tổng các giá trị trong mảng sau lần lặp cuối cùng
Nếu bạn phải tính tổng các phần tử của mảng thường xuyên, hãy xác định một hàm có thể tái sử dụng
Hàm calculateSum[]
nhận một mảng làm tham số, tính tổng các phần tử của mảng và trả về kết quả
Bạn cũng có thể sử dụng vòng lặp accumulator
2 cơ bản để tính tổng một dãy số
Lấy tổng của một dãy số bằng vòng lặp accumulator
2
Để lấy tổng của một dãy số
- Khai báo một biến
sum
mới và khởi tạo nó thành0
- Sử dụng vòng lặp
accumulator
2 để lặp lại mảng - Gán lại giá trị của biến
sum
thành giá trị hiện tại cộng với phần tử mảng hiện tại
Chúng tôi đã sử dụng một vòng lặp accumulator
2 cơ bản để lặp lại mảng
Trên mỗi lần lặp, chúng tôi sử dụng chỉ mục để truy cập phần tử mảng hiện tại và gán lại biến sum
Bạn chọn cách tiếp cận nào là vấn đề sở thích cá nhân. Tôi sẽ sử dụng phương pháp Array.reduce[]
hoặc vòng lặp for...of
vì cả hai tùy chọn đều khá trực tiếp và trực quan