Kiểm Tra Và Lấy Phần Tử Trùng Trong Mảng JavaScript

Hướng dẫn cách kiểm tra và lấy phần tử trùng trong mảng JavaScript. Bạn sẽ học được 2 cách căn bản để kiểm tra phần tử trùng trong mảng JavaScript cũng như ứng dụng chúng để lấy phần tử trùng nhau trong mảng JavaScript sau bài học này.

Chúng ta có 3 phương pháp kiểm tra phần tử trùng trong mảng JavaScript như sau:

  • Kiểm tra phần tử trùng trong mảng JavaScript bằng cách so sánh từng phần tử
  • Kiểm tra phần tử trùng trong mảng JavaScript bằng cách sắp xếp mảng
  • Kiểm tra phần tử trùng trong mảng JavaScript bằng Array reduce

Và ứng dụng một trong 2 phương pháp kiểm tra ở trên, chúng ta cũng có thể tiến hành lấy phần tử trùng trong mảng JavaScript.

Kiểm tra phần tử trùng trong mảng JavaScript bằng cách so sánh từng phần tử

Để kiểm tra phần tử trùng trong mảng JavaScript, chúng ta có thể lấy lần lượt từng phần tử và so sánh xem có phần tử nào giống nó trong chuỗi ban đầu hay không.

Nếu tồn tại dù chỉ một cặp phần tử giống nhau, điều đó có nghĩa là tồn tại phần tử trùng nhau trong mảng ban đầu, và ngược lại nếu tất cả đều khác nhau thì không tồn tại phần tử trùng nhau trong mảng ban đầu.

Để làm được điều đó, chúng ta cần dùng tới một vòng lặp lồng để lấy và kiểm tra từng phần tử trong mảng ban đầu.

Và chúng ta viết hàm kiểm tra phần tử trùng trong mảng JavaScript trong chương trình như sau:

Copy
/*Tạo hàm kiểm tra phần tử trùng trong mảng JavaScript*/function array_is_unique( array, size){ //flag = 1 => tồn tại phần tử trùng nhau //flag = 0 => không tồn tại phần tử trùng nhau let flag = 0; for (let i = 0; i < size - 1; ++i) { for (let j = i + 1; j < size; ++j) { if (array[i] == array[j]) { /*Tìm thấy 1 phần tử trùng là đủ và dừng vòng lặp*/ flag = 1; break; } } } return flag;}//Khởi tạo mảng cần kiểm tra phần tử trùng nhau let array1 = [1,2,3,3,2,5]; //Mảng chứa phần tử trùng nhaulet array2 = [1,2,3,4,5,6,7]; //Mảng không chứa phần tử trùng nhau//Kiểm tra phần tử trùng nhaulet check1 = array_is_unique(array1,array1.length);if (check1 == 1) console.log( "ton tai phan tu trung nhau");else console.log( "khong ton tai phan tu trung nhau");//Kiểm tra phần tử trùng nhaulet check2 = array_is_unique(array2,array2.length);if (check2 == 1) console.log( "ton tai phan tu trung nhau");else console.log( "khong ton tai phan tu trung nhau");

Kết quả phép kiểm tra phần tử trùng trong mảng JavaScript như sau:

Copy
ton tai phan tu trung nhaukhong ton tai phan tu trung nhau

Kiểm tra phần tử trùng trong mảng JavaScript bằng cách sắp xếp mảng

Ngoài cách so sánh từng phần tử trong mảng bằng vòng lặp lồng như trên, chúng ta cũng có thể kiểm tra phần tử trùng trong mảng JavaScript bằng cách sắp xếp mảng.

Ý tưởng ở đây là, sau khi sắp xếp mảng, thì các phần tử trùng nhau (nếu có) sẽ được xếp nằm cạnh nhau, do đó nếu chúng ta kiểm tra trong mảng sau khi sắp xếp có tồn tại phần tử nào giống với phần tử đằng sau nó, thì điều đó chứng tỏ mảng ban đầu có tồn tại phần tử trùng nhau.

Để sắp xếp mảng trong JavaScript, chúng ta sẽ sử dụng tới phương thức sort() mà Kiyoshi đã hướng dẫn trong bài Sắp xếp phần tử trong mảng JavaScript (sort)

Và chúng ta viết hàm kiểm tra phần tử trùng trong mảng JavaScript trong chương trình như sau:

Copy
/*Tạo hàm kiểm tra phần tử trùng trong mảng JavaScript*/function array_is_unique_sort(array, size){ //flag = 1 => tồn tại phần tử trùng nhau //flag = 0 => không tồn tại phần tử trùng nhau array.sort(); //Sắp xếp mảng theo thứ tự tăng dần let flag = 0; for (let i = 0; i < size - 1; ++i) { if (array[i] == array[i + 1]) { /*Tìm thấy 1 phần tử trùng là đủ và dừng vòng lặp*/ flag = 1; break; } } return flag;}//Khởi tạo mảng cần kiểm tra phần tử trùng nhau let array1 = [1,2,3,3,2,5]; //Mảng chứa phần tử trùng nhaulet array2 = [1,2,3,4,5,6,7]; //Mảng không chứa phần tử trùng nhau//Kiểm tra phần tử trùng nhaulet check1 = array_is_unique_sort(array1,array1.length);if (check1 == 1) console.log( "ton tai phan tu trung nhau");else console.log( "khong ton tai phan tu trung nhau");//Kiểm tra phần tử trùng nhaulet check2 = array_is_unique_sort(array2,array2.length);if (check2 == 1) console.log( "ton tai phan tu trung nhau");else console.log( "khong ton tai phan tu trung nhau");

Kết quả phép kiểm tra phần tử trùng trong mảng JavaScript như sau:

Copy
ton tai phan tu trung nhaukhong ton tai phan tu trung nhau

Kiểm tra phần tử trùng trong mảng JavaScript bằng Array reduce

Trong bài Array reduce trong JavaScript chúng ta đã biết cách Xóa phần tử trùng trong mảng JavaScript bằng Array reduce và thu về một mảng chỉ chứa các phần tử không trùng lặp.

Ứng dụng Array reduce, chúng ta có thể xóa phần tử trùng trong mảng ban đầu, rồi so sánh số phần tử trước và sau khi xóa của mảng có giống nhau hay không.

Nếu giống nhau, chứng tỏ mảng ban đầu không chứa phần tử trùng, và ngược lại nếu khác nhau, điều đó chứng tỏ mảng ban đầu chứa phần tử trùng đã được xóa đi.

Và đây là chương trình mẫu:

Copy
let myArray = [1,2,3,3,2,5]; //Mảng chứa phần tử trùng nhaulet myArrayWithNoDuplicates = myArray.reduce(function (accumulator, element) { if (accumulator.indexOf(element) === -1) { accumulator.push(element) } return accumulator}, [])console.log(myArray)console.log(myArrayWithNoDuplicates)if (myArray.length !== myArrayWithNoDuplicates.length) console.log( "ton tai phan tu trung nhau");else console.log( "khong ton tai phan tu trung nhau");

Kết quả, chúng ta có thể kiểm tra phần tử trùng trong mảng ban đầu như sau:

Copy
[ 1, 2, 3, 3, 2, 5 ][ 1, 2, 3, 5 ]ton tai phan tu trung nhau

Lấy phần tử trùng trong mảng JavaScript

Bằng cách sử dụng một trong các phương pháp ở trên, chúng ta có thể biến tấu chương trình để có thể lấy phần tử trùng trong mảng JavaScript.

Ví dụ, chúng ta sử dụng cách 1 và thay đổi chút xíu hàm kiểm tra phần tử trùng nhau để tạo ra hàm lấy phần tử trùng trong mảng JavaScript như sau:

Copy
/*Tạo hàm lấy phần tử trùng trong mảng JavaScript*/function take_duplicate_element( array, size){ let result = []; let count = 0; for (let i = 0; i < size - 1; ++i) { for (let j = i + 1; j < size; ++j) { if (array[i] == array[j]) { /*Tìm thấy phần tử trùng thì thêm vào mảng kết quả*/ result[count]=array[i]; ++ count; } } } return result}let array1 = [1,2,3,3,2,5]; let array2 = [1,1,2,3,2,5,5,8,9,6];//Kiểm tra phần tử trùng nhaulet result1 = take_duplicate_element(array1,array1.length);console.log(result1);let result2 = take_duplicate_element(array2,array2.length);console.log(result2);

Kết quả phép lấy phần tử trùng trong mảng JavaScript như sau:

Copy
2 3 1 2 5

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách kiểm tra phần tử trùng trong mảng JavaScript cũng như cách lấy phần tử trùng nhau trong mảng JavaScript rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

URL Link

https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/mang-trong-javascript/kiem-tra-phan-tu-trung-trong-mang-cpp/

Từ khóa » Viết Chương Trình Javascript Tìm Các Phần Tử Trùng Lặp Trong Mảng