Checks if two arrays contain the same elements regardless of order.
- Use a
for...of
loop over aSet
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
翻译自:https://www.30secondsofcode.org/js/s/arrays-have-same-contents