Bài tập về Kiểu dữ liệu Set 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 17:05 19-07-2023 1.543 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ề Kiểu dữ liệu Set 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ề Kiểu dữ liệu Set 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 Map 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ề kiểu dữ liệu Set trong JavaScript

Câu 1: Set trong JavaScript là gì? Đặc điểm nổi trội của Set so với các loại CTDL khác.


Câu 2: Cho 2 set có sẵn: set a và set b. Viết chương trình thực hiện các yêu cầu sau:

  • In ra các phần tử chỉ có trong a mà không có trong b.
  • In ra các phần tử chỉ có trong b mà không có trong a.
  • In ra các phần tử có trong cả 2 set.

Câu 3: Hãy cho biết điều gì đã xảy ra với s2?

> s1 = new Set('kteam')
Set(5) { 'k', 't', 'e', 'a', 'm' }
> s2 = s1
Set(5) { 'k', 't', 'e', 'a', 'm' }
> s1.delete('t')
true
> s2
Set(4) { 'k', 'e', 'a', 'm' }

Đáp án bài tập mảng trong JavaScript

Bạn có thể xem chi tiết các câu hỏi ở Bài tập về array (mảng) trong JavaScript

Đáp án câu 1:

Về bản chất, array là một object cho phép lưu trữ dữ liệu dưới dạng danh sách.

Dấu hiệu nhận biết cơ bản của array là các phần tử nằm trong cặp ngoặc vuông [].


Đáp án câu 2:

Thực chất, khi ta gán giá trị của một biến array này cho một biến array khác, thì ta đã làm cho 2 biến trỏ vào cùng một vùng chứa.

Khi ấy, nếu ta thay đổi giá trị của một biến, thì thực chất là làm cho vùng chứa đó bị thay đổi. Lúc này, khi ta gọi giá trị của cả 2 biến, thì cả 2 đều đã bị thay đổi vì chúng đều trỏ vào cùng một vùng chứa.

Các bạn có thể tham khảo chi tiết hơn tại bài Kiểu dữ liệu array trong JavaScript– p1.


Đáp án câu 3:

Dưới đây là chương trình tham khảo (Kteam sẽ để cho các bạn tự tìm hiểu, để giúp các bạn có hướng tuy duy tốt hơn)

// Sum --> Ý a
function Sum(arr) {
	sum = 0;
	arr.forEach((num) => sum += num);
	return sum;
}
// inRange --> ý b
function inRange(arr, m, n) {
	return arr.filter((num) => (m <= num) && (num <= n));
}
// filterPrime --> Ý c
function filterPrime(arr) {
	ar = []
	check = true;
	for(let num of arr) {
		if(num <= 1) {
			check = false;
			break;
		}
		for(let j = 2; j*j <= num; j++) if(num % j == 0) {
			check = false;
			break;
		}
		if(check == true) console.log(num);
		check = true;
	}
}

Đáp án câu 4:

Chương trình tham khảo

// Ý a
function countZeroNumbers(arr) {
	let cnt = 0;
	for(let num of arr) cnt += (num == 0);
	return cnt;
}

// Ý b
function countLongestOnes(arr) {
	let ret = 0, cnt = 0;
	for(let num of arr) {
		if(num == 1) {
			cnt++;
			ret = Math.max(ret, cnt);
		} else cnt = 0;
	}
	return ret;
}

Dưới đây sẽ là phần giải thích của Kteam:

  1. Ở ý a, ta chỉ cần lặp qua các phần tử và so sánh chúng với 0, sau đó tính cập nhật số lượng số 0 bằng 1 biến đếm là được.
  2. Ở đây, ta sẽ dùng 2 biến: Một biến (là cnt) dùng để cập nhật số lượng số 1, và một biến (ret) dùng để lưu trữ số lượng số 1 liên tiếp dài nhất.

Ở mỗi lần lặp, với mỗi arr[i] sẽ có 2 trường hợp:

  • Arr[i] = 1: tăng cnt lên, và cập nhật ret (nếu cnt lớn hơn ret, thì ta gán ret bằng cnt à mục đích là lấy số lượng số liên tiếp lớn nhất)
  • Arr[i] = 0: Thì ta gán cnt = 0 (vì lúc này, một dãy các số 1 liên tiếp đã kết thúc.

Đáp án câu 5:

Chương trình tham khảo:

//a
function Square(arr) {	
	let ar = arr.map((num) => (num*num));
	return ar;
}

// b
function countSquareNumbers(arr) {
	function isSquare(n) {
		return n == (Math.sqrt(n).toFixed()**2);
	}
	
	let cnt = 0;
	arr.forEach((num) => cnt += (isSquare(num)));
	
	return cnt;
}


// c
function countDivisors(arr) {
	let ar = arr.map(function count(num) {
		let cnt = 0;
		for(let i = 1; i <= num; i++) cnt += (num % i == 0);
		return cnt;
	})
	return ar;
}

Giải thích:

  • Ý a: rất đơn giản, chỉ cần dùng map và thêm một hàm bình phương là được.
  • Ý b: Đầu tiên, để kiểm tra xem một số n có phải là số chính phương hay không, ta chỉ cần lấy căn bậc 2 của n, làm tròn và bình phương nó và so sánh với số ban đầu là được.
    Sau đó, chỉ cần duyệt qua array và kiểm tra như bên trên. Trong phần solution, Kteam dùng một function isSquare để kiếm tra số chính phương.
  • Ý c: Chỉ cần dùng một vòng lặp là ta đã có thể đếm được số ước của một số tự nhiên rồi. Và từ đó, với n phần tử, thì ta sẽ đếm n lần :D.

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ề Kiểu dữ liệu Set 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.