2016-11-17 11 views
0

いくつかのデータをマップするフィルタ関数があります。次に、フィルタリングした後にデータが残っているかどうかをチェックし、結果をログに記録します。なんらかの理由で、私の出力に空の配列もあります。javascript - if(categories!== [])も空の配列を返します

// Filter categories 
let categories = sport.Category.filter(filterById('a', 'b')); 
sport.Category = categories; 
// If category was found 
if(categories !== []) { 
    console.log(util.inspect(categories, false, null)); 
} 

私は間違っていますか?

+4

'length'プロパティをテストしてください... – Rayon

+2

あなたが思っていることを実行していません。オブジェクトが文字どおり異なるオブジェクトではないと比較しています。このチェックは、 'if'ステートメントのために構築したオブジェクトと同じオブジェクトではないため、常に無視されます。 – vlaz

答えて

0

それは空の配列と同じだということを、配列ではないの長さを確認してください。あなたのようにチェックすると、正確ではなく、categories配列にいくつかの "メタデータ"が追加される場合には失敗します。

// Filter categories 
let categories = sport.Category.filter(filterById('a', 'b')); 
sport.Category = categories; 
// If category was found 
if(categories.length > 0) { 
    console.log(util.inspect(categories, false, null)); 
} 
0

用途:

if(categories.length > 0) 
+1

または__'if(categories.length) '__ – Rayon

+1

はい:私は通常、明示的なコードを好む傾向がありますが、これは非常に簡単なケースです。ありがとう! –

関連する問題