2017-02-21 7 views
-2

配列の一部のオブジェクトをフィルタリングしようとしています。しかし、私がそれをするとき、私は空の配列を取得します。フィルタリング後に配列が空であるのはなぜですか?

コード:

let guilds = guildsData.filter((el) => { 
    return el.owner == 'true'; 
}); 
console.log(guilds); 

アレイ:

[ 
    { owner: false, 
    permissions: 2146958463, 
    icon: 'e568d2b87e31358588cb982354628d51', 
    id: '267920024570691586', 
    name: 'Hydra' }, 
    { owner: true, 
    permissions: 2146958463, 
    icon: null, 
    id: '269159705794838529', 
    name: 'test 2' } ] 

(私はほとんどのオブジェクトを削除し、それらはすべて、このように見える)

+3

' "真" 理由!= true'を –

+0

これはtruthy/falsy問題のように見える、el.ownerの期待されるタイプは何ですか?もう一度文字列値 'true'を比較している場合、' el.owner === 'true'を使う必要があります。これは 'el.owner'の値と型を比較します。 el.ownerがブール値である場合、あなたは単に '聞かせギルド= guildsData.filter(X => x.owner)を使用してフィルタリングすることができ;' –

答えて

5

文字列'true'はと同じではありませんブール定数true

==の片側がブール値であり、もう一方が他の値である場合、そのブール値を数値に変換した後で比較が行われます。

let guilds = guildsData.filter((el) => { 
    return el.owner; 
}); 

(彼らはとにかく同じではありません)'true'trueを比較する必要:このよう

'true' == true 

はこれを試してみてくださいません

'true' == 1 
+0

@Kinduser私は本当にあなたが何を意味するか見当がつかない、と私は何が表示されませんその質問はこの問題と関係しています。 – Pointy

+0

ありがとう、今私は愚かだ – Celsiuss

1

として行われます。

関連する問題