0

ベローはポリラインオブジェクトです

var firstpolyline = new L.Polyline(myPointList, {
    color: 'red',
    weight: 5,
    smoothFactor: 1
    });

このポリライン オブジェクトを配列に追加しました

var allpolylines = [];
allpolylines.push(firstpolyline);

このように、さらに 5 つのポリライン オブジェクトをこの配列に追加しました。

現在、ポリライン オブジェクトをもう 1 つ作成しています。

var mytpolyline = new L.Polyline(myPointList, {
    color: 'red',
    weight: 5,
    smoothFactor: 1
    });

今、私は mytpolyline オブジェクトを配列のオブジェクトと比較し、その配列オブジェクトのインデックスを見つけたいと思っています。

私が試したことは

var index = allpolylines.indexOf(mytpolyline);

しかし、これは配列オブジェクトのインデックスを与えていません。

4

1 に答える 1

2

オブジェクトを直接比較することはできません。明示的に参照している場合を除き、オブジェクトが等しくなることはありません。

var a = {};
var b = {};
var c = a;

b == a // false
c == a // true

配列内のオブジェクトが等しいかどうかを確認したい場合は、残念ながら各プロパティを個別に比較する必要があります。

for (prop in a){
    if (a.hasOwnProperty){
        // compare a.prop to b.prop 
    }
}

プレーン(非オブジェクト)プロパティと新しいブラウザを使用すると、次のことができます。

function comp(a,b){
    return Object.keys(a).every(function(prop){
        if (!b[prop]){ return false; }
        else if (a[prop] !== b[prop]){ return false; }
        return true;
    });
}

を参照してください。

参考文献:

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/every

于 2013-03-06T12:36:41.573 に答える