Javascript 比较两个混乱的数组

Javascript 比较两个混乱的数组,javascript,arrays,compare,Javascript,Arrays,Compare,假设阵列1 array1 = [4, 1, 16] 和数组2 array2 = [1, 16, 4] 如何比较这两个数组,我想根据任何数组对其进行排列并进行匹配,以使结果为真?Hi,Javascript中没有内置函数,因此您必须编写一个array.sort可能会派上用场。如果元素在数组中不重复,则有比使用集合语义进行排序(线性复杂度)更有效的方法:const setA=new set([4,1,16]),setB=new set([1,16,4])。然后编写或找到symmetricDiff

假设阵列1

array1 = [4, 1, 16] 
和数组2

array2 = [1, 16, 4]

如何比较这两个数组,我想根据任何数组对其进行排列并进行匹配,以使结果为真?

Hi,Javascript中没有内置函数,因此您必须编写一个
array.sort
可能会派上用场。如果元素在数组中不重复,则有比使用集合语义进行排序(线性复杂度)更有效的方法:
const setA=new set([4,1,16]),setB=new set([1,16,4])。然后编写或找到
symmetricDifference
方法的一个像样的线性多边形填充,并检查
setA.symmetricDifference(setB).size==0
。线性
symmetricDifference
实现将迭代这两个集合的元素并计算元素的出现次数,然后过滤计数为1的元素,并返回这些元素的新集合。试试看!如果元素重复,则创建一个哈希映射,计算一个数组的出现次数,并计算另一个数组的出现次数。然后检查是否每个计数都以0结束。类似于:
const compareOutOfOrder=(arr1,arr2)=>{const counts=new Map();arr1.forEach((值)=>counts.set(值,(counts.get(值)??0)+1));arr2.forEach((值)=>counts.set(值,(counts.get(值)??0)-1));返回数组.from(counts.values()).every((计数)=>count==0);};比较顺序([4,1,16],[1,16,4])。仍然是线性复杂度。@georg理想情况下,这个问题仍然应该作为的一个副本关闭,但是这个问题应该重新打开,因为它还有一个深入比较对象的额外要求。我只是注意到基本上有相同的算法。两者都有各自的优点和缺点,所以我将用一个组合算法在那里发表评论。