Javascript 如何以最有效的方式检查相同的阵列?

Javascript 如何以最有效的方式检查相同的阵列?,javascript,arrays,comparison,Javascript,Arrays,Comparison,我想检查两个数组是否相同 (不是内容方面的,而是按照准确的顺序) 例如: array1 = [1,2,3,4,5] array2 = [1,2,3,4,5] array3 = [3,5,1,2,4] 数组1和数组2相同,但数组3不同 在JavaScript中有没有一种很好的方法可以做到这一点?您可以比较字符串表示,以便: array1.toString() == array2.toString() array1.toString() !== array3.toString() 但这也会

我想检查两个数组是否相同 (不是内容方面的,而是按照准确的顺序)

例如:

 array1 = [1,2,3,4,5]
 array2 = [1,2,3,4,5]
 array3 = [3,5,1,2,4]
数组1和数组2相同,但数组3不同


在JavaScript中有没有一种很好的方法可以做到这一点?

您可以比较字符串表示,以便:

array1.toString() == array2.toString()
array1.toString() !== array3.toString()
但这也会导致

array4 = ['1',2,3,4,5]

等于数组1,如果这对您很重要

那么,迭代检查每个元素有什么不对

function arraysEqual(arr1, arr2) {
    if(arr1.length !== arr2.length)
        return false;
    for(var i = arr1.length; i--;) {
        if(arr1[i] !== arr2[i])
            return false;
    }

    return true;
}

定义函数后,
array.join()
方法将是最安全、最快、更灵活、始终准确、实际上更“优雅”的方法。如果这成为一个问题的话,它的内存占用也会减少。这是一个不错的方法。有一个小问题:变量i应该从arr1.length-1变为0,而不是从arr1.length变为0。@mimarcel:
i--
语句在迭代开始之前计算一次。@palswim你说得对!我不知道
我--
有双重把戏。:)@阿尼鲁达达斯:这只适用于“排序”数组,因为,不仅仅是同构。你可能想检查一下,我认为一些答案是为了“代码行”效率,比如larry k,而其他答案是为了执行效率的速度。遗憾的是,你没有说明你要找的是哪一个:)@koopajah没有投票结束,因为区别在于老问题是集合比较,这是集合比较以及内容顺序。因此,集合a==b&&a集合的顺序与b相同。这显然是错误的,因为它似乎表明[1,2]等于['1,2'],也等于[1,2']。。。。。等等,等等。它忽略了每个项目的类型。只是运行了一些快速测试,
for
循环比
toString
方法快得多。在我的测试中,
for
循环的最坏情况是
20x
更快。最坏的情况是
for
循环的
80x
速度更快。因此,基本上永远不要使用这种方法,它既错误又缓慢:)。谢谢,快速测试2个数组并保持可读性非常有用,即使这不是最好的方法;)或
array1.join()==array3.join()但这不检查类型