检查数组是否具有相同的内容

检查两个数组是否包含相同的元素,无论顺序如何。

  • 使用for...of循环遍历从两个数组的值创建的Set
  • 使用Array.prototype.filter()比较两个数组中每个不同值的出现次数。
  • 如果任何元素的计数不匹配,则返回false,否则返回true
const haveSameContents = (a, b) => {
  for (const v of new Set([...a, ...b]))
    if (a.filter(e => e === v).length !== b.filter(e => e === v).length)
      return false;
  return true;
};

haveSameContents([1, 2, 4], [2, 4, 1]); // true