เราต้องเขียนฟังก์ชันตรวจสอบว่า array2 เป็น subset ของ array1 โดยพิจารณาความถี่ของค่าซ้ำด้วย (ถ้า array1 มี 'a' สองครั้ง array2 ต้องมี 'a' อย่างน้อยสองครั้ง)
ตัวอย่างโค้ด
const isSubset = (arr1, arr2) => {
const count = (arr, ind) => {
let i = arr.length;
while (i--) hash[arr[i]] = (hash[arr[i]] || 0) + ind;
};
const hash = {};
let i, keys;
count(arr1, 1);
count(arr2, -1);
keys = Object.keys(hash);
i = keys.length;
while (i--) { if (hash[keys[i]]) { return false; } }
return true;
};
console.log(isSubset(["B", "A", "C", "A"], ["A", "B", "C", "A"])); // true
console.log(isSubset(["B", "A", "C", "A"], ["A", "B", "C", "D"])); // false
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
true false