1

以前は、次を使用して機能をフィルタリングしていました。

for (var i=0; i<features.length; i++) 
 { 
 if (features[i].attributes.color == 'blue') 
. 
. 

しかし、値が次のようになる場合もあります: ダークブルー、ライトブルー .. など だから、マッチを使用しましたが、まだ動作しません:

var x = "blue"; 
 if (features[i].attributes.color.match(new RegExp(x, "ig"))) 

次のエラーが表示されます。

Cannot call method 'match' of undefined 
4

1 に答える 1

1

一部の機能には色属性が設定されていないようです。たとえば、次のように実行します。

for (var i=0; i<features.length; i++) 
    console.log(typeof features[i].attributes.color);

未定義の属性で == を使用できますが、関数を実行することはできません。これは、== 'blue'エラーがスローされない理由を説明しています。

var foo = {bar: 'Test'};
// That doesn't throw error
if (foo.baz == 'blue') console.log('Is blue');
// And that throws error
if (foo.baz.match(new RegExp('blue', 'ig'))) console.log('Is blue');

したがって、最初に color 属性が設定されているかどうかをテストしてから、それをテストする必要があります。

for (var i=0; i<features.length; i++) 
    if (features[i].attributes.color && features[i].attributes.color == 'blue') ...
于 2012-12-16T15:25:36.327 に答える