检查数组是否包含另一个数组的所有元素(包括重复项)

问题描述 投票:0回答:1

我想要一个函数,如果给定数组包含给定“目标”数组的元素(每个重复项计算一次),则返回

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。

javascript
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.