2017-02-20 1 views
-1

にフィルタを使用して、私は単純なキーと値のペアを含むオブジェクトを持っていると私は、任意のプロパティをフィルタリングしたいfalsey値を持っています。これはArray.prototype.filter()を使用して可能ですか?は、オブジェクト

+1

[尋ねる]をお読みください。重要なフレーズ:「検索と研究」と「あなたがそれを自分で解決することを妨げた困難を説明する」 –

答えて

2

Array.prototype.filterを()を使用して、このことは可能ですか?

ではなく、直接、はい:あなたはObject.keysまたは類似を使用した後にそれを行うことができます。

var arrayOfTruthyValues = Object.keys(obj).filter(key => obj[key]); 

結果はtruthy値の配列です。

あなたは最終的な結果はそれを行うことができreducefilterを組み合わせ、オブジェクトになりたい場合は:私達は決して実際にアキュムレータの値を変更するので、大部分だけ(ループ構造としてreduceを使用しています

var newObj = Object.keys(obj) 
    .filter(key => obj[key]) 
    .reduce((newObj, key) => { 
     newObj[key] = obj[key]; 
     return newObj; 
    }, {}); 

私たちは同じオブジェクトを返すだけです)、これは時には「虐待」とみなされます。 :-)そして、それは我々がfilter部品なしで行うとちょうどreduceifを置くことを意味し、しかし... Object.keysが唯一のオブジェクトの自身列挙プロパティが含まれていることを


注意。あなたが独自のプロパティをしたい場合、彼らは可算でなくても、それはおそらく代わりにObject.getOwnPropertyNamesだろう。

+0

私たちは、小さなを主張し、私はこのケースであなたの意見を楽しみにしていました。誰が正しい?誰が答えが間違っていますか?あなたは何か... http://stackoverflow.com/questions/42356481/how-to-get-the-last-key-of-object-which-has-a-value/42356557を言うことができる場合 –

関連する問題