2017-11-07 3 views
0

私はlodashが新しく、値が空でない配列(空の配列の値を除く)を持つオブジェクトを返す行を書いています。 filteredResultslodash:値が空でない配列を持つオブジェクトをフィルタする

let results = {"1":[1,2,3],"2":[2,4,6],"0":[]}; 
let filteredResults = _.filter(results, (result) => {return (_.size(_.values(result)) > 0);}); 
console.log(filteredResults); 

私の期待値は次のとおりです。{'1': [ 1, 2, 3 ], '2': [ 2, 4, 6 ] }。しかし、私は[ [ 1, 2, 3 ], [ 2, 4, 6 ] ]の結果を得ています。

ここで、キーは12ですか?

答えて

1

_.filterメソッドは、最初の引数としてオブジェクトを受け入れることができますが、受け入れられた値を持つ配列を元のオブジェクトから返します。評価、

let filteredResults = _.pickBy(results, value => value.length > 0) 
1

あなたはreduceを使用し、各結果のキーと値へのアクセスを得ることができます:あなたはおそらく、フィルタを通過し、キー/値のペアを持つオブジェクトを返します。これは、代わりに_.pickByメソッドを使用したいですそれらを新しいオブジェクトにプッシュします。方法は次のとおりです。

let filteredResults = _.reduce(results, (result, value, key) => { 
    if (value.length > 0) { 
     result[key] = value; 
    } 
    return result; 
}, {}); 
関連する問題