Bài tập về mảng trong JavaScript

Khóa học JavaScript cơ bản

0.0 (0 đánh giá)
Tạo bởi Katsu Cập nhật lần cuối 23:40 13-07-2023 2.601 lượt xem 0 bình luận
Tác giả/Dịch giả: Nông Thanh Toàn
Học nhanh

Danh sách bài học

Bài tập về mảng trong JavaScript

Trong bài này, Kteam và bạn sẽ thực hiện một số bài tập củng cố kiến thức về Mảng trong JavaScript

Để bài tập đạt hiệu quả tốt nhất bạn nên thực hiện theo các bước sau:

  1. Đọc đề các câu hỏi và tự đưa ra đáp án/ lời giải của mình.
  2. Tham khảo đáp án tại bài Bài tập về Kiểu dữ liệu Set trong JavaScript và rà sát đáp án/ lời giải của bản thân
  3. Xem video giải thích đáp án của bài này và note lại các ý chính để củng cố lại kiến thức.

Câu hỏi về Mảng trong JavaScript

Câu 1: Bản chất của array là gì ? Dấu hiệu cơ bản nhất để nhận biết một array.


Câu 2: Giải thích tại sao biến arr2 dưới đây lại bị thay đổi ?

> arr1 = ['how', 'Kteam']
[ 'how', 'Kteam' ]
> arr2 = arr1
[ 'how', 'Kteam' ]
> arr1[1] = 'Kter'
'Kter'
> arr1
[ 'how', 'Kter' ]
> arr2
[ 'how', 'Kter' ]

Câu 3: Cho sẵn 1 array a, hãy thực hiện các thao tác sau:

  1. Tính tổng các phần tử của a và in ra màn hinh

  2. Cho trước 2 số m và n, in ra các phần tử của a nằm trong khoảng [m..n] theo thứ tự từ bé đến lớn.

  3. In ra các số nguyên tố trong a.


Câu 4: Cho một array nums (chỉ bao gồm các số 0 và 1).

  1. In ra số lượng số 0 trong a.

  2. Nâng cao: Đếm số lượng các số 1 liên tiếp dài nhất trong a. 2 số nằm cạnh nhau được xem là liên tiếp nhau.


Câu 5: Với một array arr cho trước (chỉ bao gồm các số tự nhiên), thực hiện các yêu cầu sau:

  1. Sử dụng map để bình phương toàn bộ các phần tử trong array.

  2. Dùng array ban đầu, đếm xem trong arr có bao nhiêu số chính phương (số chính phương là số có dạng x^{2} với x là một số tự nhiên.

  3. Đếm số lượng ước của các số trong arr, sau đó lưu vào một array mới.


Đáp án bài tập về Function trong JavaScript

Bạn có thể xem chi tiết các câu hỏi ở Bài tập về Function trong JavaScript

Đáp án câu 1:

Vì số nguyên tố chỉ có 2 ước là 1 và chính nó, nên cách đơn giản nhất là duyệt qua các số từ 1 đến n (ta gọi số đang kiểm tra là n), sau đó đếm các ước của n. Cuối cùng, ta chỉ cần xem nó có lớn hơn 2 hay không là xong.

Dưới đây là code cho cách triển khai như trên:

function isPrime(n) {
	let count = 0;
	for(let i = 1; i <= n; i++) if(n % i == 0) count++;
	if(count > 2) return false;
	return true;
}

Nhưng, liệu có nhất thiết phải duyệt qua toàn bộ các số từ 1 đến n không nhỉ ?

Nếu để ý, thì số nguyên tố n chỉ chia hết cho 1 và n, tức là trong khoảng [2..n], nếu còn bất kì một số nào khác là ước của n thì chứng tỏ n không phải là số nguyên tố (vì có nhiều hơn 2 ước). Từ đây, ta có thể bỏ luôn biến count đi:

function isPrime(n) {
	for(let i = 2; i < n; i++) if(n % i == 0) return false;
	return true;
}

Và, với đoạn code như trên vẫn chưa ổn, vì ta còn thiếu 1: n <= 1.

Với n <= 1, hiển nhiên nó không phải là số nguyên tố. Do đó, ta cần phải thêm một lệnh điều kiện vào để code trở nên “more optimize”:

function isPrime(n) {
	if(n <= 1) return false;
	for(let i = 2; i < n; i++) if(n % i == 0) return false;
	return true;
}

Vậy…nếu như n là một số nguyên tố thì sao nhỉ ? i sẽ chạy luôn đến n-1 mới dừng lại.

Nhưng hãy để ý kĩ, nếu như i nằm trong khoảng [1..n], và n chia hết cho i, thì chắc chắn n sẽ chia hết cho (n / i). Như vậy, thực chất, ta chỉ cần kiểm tra trong khoảng [1...\sqrt{n}] là đủ (vì nếu trong khoảng này có một số là ước của n, thì chắc chắn khoảng [\sqrt{n} + 1 ..n] cũng sẽ có một số khác. Và ngược lại, nếu trong khoảng này không có ước của n, thì khoảng còn lại chắc chắn là không có.

Một yếu tố nữa làm cho khoảng từ [1...\sqrt{n}] tối ưu, là trường hợp xấu nhất: n là bình phương của 1 số nguyên tố.

Ví dụ, n = 25. Lúc này, ta cần phải để i chạy đến 5 thì mới có thể xác định được n không phải là số nguyên tố. Như vậy, khoảng nhỏ nhất mà ta cần xét chính là căn bậc 2 của n:

function isPrime(n) {
	if(n <= 1) return false;
	for(let i = 2; i*i <= n; i++) if(n % i == 0) return false;
	return true;
}

Đây chỉ là một thuật toán cơ bản giúp kiểm tra số nguyên tố. Trên thực tế, có rất nhiều thuật toán kiểm tra số nguyên tố khác nhau và mỗi loại có ưu, nhược điểm riêng. Các bạn có thể tìm hiểu thêm.


Đáp án câu 2:

  1. iterable: là một nhóm các giá trị mà mỗi giá trị trong nhóm có thể được lấy ra một cách tuần tự thông qua vòng lặp for..of. Ví dụ: string, array.
  2. iterator: là cái mà giúp chúng ta duyệt qua các phần tử khi ta sử dụng for..of.
  3. generator: là một loại function mà có thể chạy ngắt quãng nhờ lệnh yield. Trong JavaScript, generator được khởi tạo bằng cú pháp sau:

function* <function_name>(<parameter-1>, <parameter-2>,…) {

<statement>

}

Trong đó:

  • <function_name> là tên của generator

  • Các <parameter>: là các tham số của function.

  • <statement>: là các lệnh bên trong generator.


Đáp án câu 3:

Arrow function là một function dạng thu gọn, và nó có cú pháp như sau:

<Tên biến> = (<p1>, <p2>, …, <pn>) => <statement>

Trong đó:

  • <p1>, <p2>, …, <pn>: là các tham số trong function. Nếu như chỉ có 1 tham số, ta có thể loại bỏ dấu ngoặc.

  • <statement>: Là lệnh (hoặc khối lệnh) của function.

Ví dụ:

> sqr = (a) => a*a;
[Function: sqr]
> trunc = (a) => a.toFixed();
[Function: trunc]
> trunc(100.62)
'101'
> sqr(8)
64

Đáp án câu 4:

Lựa chọn chính xác là a

Giải thích: Trong các đáp án, chỉ có đáp án a là các đối số được đưa vào đúng cách và đúng thứ tự.


Đáp án câu 5:

Một function trả về undefined theo mặc định. Khi không có lệnh return hoặc return về undefined, thì hàm trả về undefined sau khi thực thi.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Bài tập về mảng trong JavaScript dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Khóa học

Khóa học JavaScript cơ bản

Nếu bạn đang muốn bắt đầu học JavaScript thì đây chính là khóa học dành cho bạn. Trong khóa học này, Kteam sẽ cung cấp cho những kiến thức cơ bản nhất của ngôn ngữ lập trình JavaScript.

Khóa học này không đòi hỏi kiến thức nền tảng nhiều, nên giả sử như bạn chưa biết gì về lập trình, bạn vẫn có thể tham gia. Do đó dù bạn có là một người trái ngành cũng có thể tiếp cận - Đồng thời bạn cũng không cần phải là một thiên tài toán học để tham gia khóa học này 😉.

Đánh giá

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Không có video.