0

私はJSで何かをコーディングしていて、コードをテストする必要があります-2つの配列の要素が同じであるかどうかを確認する必要があります。だから私は配列を持っています:boreholes = [[66000, 457000],[1111,2222]....];そして私はこの配列が例えばの要素を含んでいるかどうかをチェックしたいと思います。[66000,457000]そうしました: boreholes.indexOf([66000,457000])しかし、それは-1を返すので、トラフ配列を次のように繰り返します:

for (var i = 0; i< boreholes.length; i++){
 if (boreholes[i] == [66000, 457000]){
  console.log('ok');
  break;
 }
};

しかし、それでも私は何も持っていません。誰かが私が間違っていることを説明できますか?

4

5 に答える 5

3

個別のオブジェクトを比較しています。オブジェクトを比較する場合、比較は、比較される2つのオブジェクトが同じオブジェクトである場合にのみ評価さtrueます。IE

var a = [1,2,3];
var b = a;
a === b //true
b = [1,2,3];
a === b //false, b is not the same object

このような配列を比較するには、すべての要素を個別に比較する必要があります。

for (var i = 0; i < boreholes.length; i++) {
    if (boreholes[i][0] == 66000 && boreholes[i][1] == 457000) {
        console.log('ok');
        break;
    }
}
于 2012-09-06T09:52:01.993 に答える
3

array1 == array2ここでやろうとしているように、javascriptのように配列を比較することはできません。

2つの配列を比較するためのクラッジメソッドは次のとおりです。

function isEqual(array1, array2){
  return (array1.join('-') == array2.join('-'));
}

これで、次のようなコードでこのメソッドを使用できます。

for (var i = 0; i< boreholes.length; i++){
 if (isEqual(boreholes[i], [66000, 457000]){
  console.log('ok');
  break;
 }
};
于 2012-09-06T09:55:28.770 に答える
2

現在、私は同じ問題を抱えていました、toString()メソッドでそれをしました

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

array1 == array2 // false
array1.toString() == array2.toString() // true

var array3 = [1,2,3,[1,3,2]]

// Take attention
array1.toString() == array3.toString() // false
于 2015-06-26T13:58:58.953 に答える
0

関数型プログラミング用のUnderscore.jsフレームワークを使用してそれを行うこともできます。

function containsElements(elements) {
  _.find(boreholes, function(ele){ return _.isEqual(ele, elements); });
}

if(containsElements([66000, 457000])) {
  console.log('ok');
}
于 2012-09-06T10:01:48.177 に答える
0

配列に3つ以上の要素が含まれる可能性があるかどうかは明確ではないため、これでうまくいく可能性があります

var boreholes = [[66000, 457000],[1111,2222]]; 
var it = [66000, 457000];

function hasIt(boreholes, check) {
  var len = boreholes.length;
  for (var a = 0; a < len; a++) {
    if (boreholes[a][0] == check[0] && boreholes[a][1] == check[1]) {
       // ok
       return true;
    }
  }
  return false;
}

if (hasIt(boreholes, it)) {
  // ok, it has it
}
于 2012-09-06T10:16:05.613 に答える