We are required to write a JavaScript function that takes in two arrays of literals. The function should determine whether or not the second array is a subset of the first array, keeping these things in mind −
All values of array1 should be defined in array2
If duplicate values exist in array1, they should also take into account in array2.
For example, if arr1 = ["a", "a"] and arr2 = ["b", "a"] then isSubset is false because "a" appears twice in the first but only once in the second.
Example
The code for this will be −
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"]));
console.log(isSubset(["B", "A", "C", "A"], ["A", "B", "C", "D"]));Output
And the output in the console will be −
true false