Returns true
if two arrays contain the same elements regardless of order, false
otherwise.
Use a for...of
loop over a Set
created from the values of both arrays.
Use Array.prototype.filter()
to compare the amount of occurrences of each distinct value in both arrays.
Return false
if the counts do not match for any element, true
otherwise.
代码片段
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