Giả sử chúng ta có hai mảng chứa các giá trị nguyên thủy với cùng số lượng phần tử. Chúng ta cần viết một hàm kiểm tra xem cả hai mảng có chứa cùng các phần tử với cùng số lần xuất hiện hay không.
Nếu thỏa mãn điều kiện, trả về true, ngược lại trả về false.
Cách tiếp cận: Tạo bản sao của mảng thứ hai, lặp qua mảng đầu tiên. Khi lặp, xóa các phần tử khỏi mảng thứ hai nếu chúng xuất hiện trong mảng đầu. Nếu gặp phần tử không có trong mảng thứ hai, trả về false. Sau khi lặp xong, trả về true.
Ví dụ
Mã thực hiện:
const arr1 = [2, 5, 7, 4, 3, 3];
const arr2 = [3, 5, 7, 2, 3, 4];
const compareWithCount = (arr1, arr2) => {
if(arr1.length !== arr2.length){
return false;
};
const copy2 = arr2.slice();
const areEqual = arr1.every(el => {
if(!copy2.includes(el)){
return false;
};
copy2.splice(copy2.indexOf(el), 1);
return true;
});
return areEqual;
};
console.log(compareWithCount(arr1, arr2));Kết quả
Kết quả in ra console:
true