搜索2d javascript数组以获取已知的完整数组

时间:2014-04-10 00:44:27

标签: javascript arrays multidimensional-array

我有一个类似于这的二维数组:

var array = [
  {100,200},
  {200,200},
  {100,400}
];

现在我想查找2d数组中是否存在已知数组。例如,我想检查[200,200]是否存在于2d数组中的第二级数组。

在过去的1d阵列中,我使用了类似的东西:

if (value in array) {...}

似乎无法在2d上使用该方法。什么是最好的解决方案?

2 个答案:

答案 0 :(得分:0)

不确定您是否已经知道,但语法不正确。它应该是这样的:

var array = [
  [100,200],
  [200,200],
  [100,400]
];

一种天真的方法来检查[200,200]是否作为二级数组存在:

console.log(array[1][0] == 200 && array[1][1] == 200);

另一种天真的方法是使用嵌套循环并遍历每个项目。

如果您想快速处理此问题,您可能需要阅读搜索算法。 Searching Algorithms

答案 1 :(得分:0)

var array = [
    [100,200],
    [200,200],
    [100,400]
];

var searchFor = [200,200];

function arrayExistsInside(haystack, needle) {
    for(var i = 0; i < haystack.length; i++) {
        if(compareArray(haystack[i], needle)) return true;
    }
    return false;
}

function compareArray(array1, array2) {
    if(array1.length != array2.length) return false;

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

    return true;
}

if(arrayExistsInside(array, searchFor)) { ... }

您还可以使用How to compare arrays in JavaScript?

上列出的比较功能