我想要一个函数,如果给定数组包含给定“目标”数组的元素(每个重复项计算一次),则返回
true
。如下。
const target = [ 1, 2, 2, 3];
const array1 = [ 1, 2, 2, 3]; // true
const array2 = [ 1, 2, 3 ]; // true
const array3 = [ 1, 2, 2, 2, 3 ]; // false
请只清除 JS。
function includesElements(target, array) {
const targetCounts = {};
for (const num of target) {
targetCounts[num] = (targetCounts[num] || 0) + 1;
}
const arrayCounts = {};
for (const num of array) {
arrayCounts[num] = (arrayCounts[num] || 0) + 1;
}
for (const num in arrayCounts) {
if (!targetCounts[num] || arrayCounts[num] > targetCounts[num]) {
return false; // Element count exceeds target or element not in target
}
}
return true;
}
使用示例:
const target = [1, 2, 2, 3];
const array1 = [1, 2, 2, 3];
const array2 = [1, 2, 3];
const array3 = [1, 2, 2, 2, 3];
console.log(includesElements(target, array1)); // true
console.log(includesElements(target, array2)); // true
console.log(includesElements(target, array3)); // false