javascript - 断言两个二维数组是否相等

标签 javascript multidimensional-array

给定两个二维数组,我如何断言它们是否相等?

例如:

array1 = [[1,0],[2,1],[3,0]]
array2 = [[1,0],[2,1],[3,1]]

检查 array1 == array2 的有效方法是什么?

最佳答案

如果相等是指数组内容以相同的顺序具有相同的元素,那么最短(虽然不是最快)的方法将是:

JSON.stringify(array1) === JSON.stringify(array2)

这将适用于任何维度的数组。

更新:如果你需要一个非常快的算法,那么简单的迭代会更好。然而,它不是万无一失的,因此要使其真正安全可靠,您需要花费更多的开发时间。这是现代浏览器的一种可能的解决方案:
function equal(array1, array2) {
    if (!Array.isArray(array1) && !Array.isArray(array2)) {
        return array1 === array2;
    }

    if (array1.length !== array2.length) {
        return false;
    }

    for (var i = 0, len = array1.length; i < len; i++) {
        if (!equal(array1[i], array2[i])) {
            return false;
        }
    }

    return true;
}

下面的 JSPerf 速度测试显示了这个算法在短 JSON 上的优越性。方法:http://jsperf.com/2d-array-comparion .

关于javascript - 断言两个二维数组是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102507/

相关文章:

javascript - 调整图形标签中的文本

javascript - 从 Flash 影片控件调用 JavaScript 函数

javascript - 我的 h1 标签字体系列突然从它在 css 中的原始字体系列改变了

javascript - 获取选中的名称复选框

php - 2个复选框之间的链接问题,在不应该插入数据时插入数据

C# 从函数返回二维数组索引

php - 双排序数组

JavaScript 游戏敌人继承 - Phaser 框架

C:打印二维数组的问题

PHP - 根据字段值划分多维数组