Appearance
判断两个数组是否含有相同的元素
备注
该方法要求两个数组必须含有相同的元素,但元素的位置可以不一致。
语法
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