Kiểm tra và lấy phần tử trùng trong mảng JavaScript | Laptrinhcanban.com

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:

/*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 nhau
let 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 nhau
let 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 nhau
let 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:

ton tai phan tu trung nhau
khong 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:

/*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 nhau
let 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 nhau
let 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 nhau
let 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:

ton tai phan tu trung nhau
khong 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:

let myArray = [1,2,3,3,2,5]; //Mảng chứa phần tử trùng nhau
let 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:

[ 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:

/*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 nhau
let 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:

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.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.