Skip to content
大纲

判断两个数组是否含有相同的元素

备注

该方法要求两个数组必须含有相同的元素,但元素的位置可以不一致。

语法

js
import { arraysAreEqual } from 'warbler-js';
const result = arraysAreEqual(arr1, arr2, removeDuplicates);

参数

  • arr1 (Array) : 数组一。
  • arr2 (Array) : 数组二。
  • removeDuplicates (Boolean) : 是否去重。

返回值

Boolean : 两个数组是否含有相同的元素。

源码

js
const arraysAreEqual = (arr1, arr2, removeDuplicates = false) => {
  const array1 = removeDuplicates ? [...new Set(arr1)] : arr1;
  const array2 = removeDuplicates ? [...new Set(arr2)] : arr2;
  const generateElementCountMap = (array) => {
    const map = new Map();
    for (const element of array) {
      map.set(element, (map.get(element) || 0) + 1);
    }
    return map;
  };
  const map1 = generateElementCountMap(array1);
  const map2 = generateElementCountMap(array2);
  for (const [key, value] of map1.entries()) {
    if (map2.get(key) !== value) {
      return false;
    }
  }
  return true;
};

例子

js
import { arraysAreEqual } from 'warbler-js';

// -----------------------------------------------------------------

const arr1 = [1, 2, 4, 5, 8];
const arr2 = [2, 8, 5, 4, 1];
const result = arraysAreEqual(arr1, arr2);
console.log(result); //= > true

// -----------------------------------------------------------------

const arr1 = [1, 2, 4, 5, 8, 1];
const arr2 = [2, 8, 5, 4, 1];
const result = arraysAreEqual(arr1, arr2);
console.log(result); //= > false

// -----------------------------------------------------------------

const arr1 = [1, 2, 4, 5, 8, 1];
const arr2 = [2, 8, 5, 4, 1];
const result = arraysAreEqual(arr1, arr2, true);
console.log(result); //= > true

添加版本

1.2.6

Released under the MIT License.