web-dev-qa-db-ja.com

オブジェクト値の最小値と最大値を見つけるための下線

チュートリアルに従って ここ

コレクションは配列またはオブジェクト、JavaScriptの関連配列のいずれかです。

collectionの下のすべての関数がオブジェクトリテラルに等しく適用できることを意味しますか。たとえば、条件に基づいて値を選択する必要がありました。いう、

var obj = {
"1": {id: 1, val: 2},
"2": {id: 2, val: 5},
"3": {id: 3, val: 8},
"4": {id: 4, val: 1}
}

Valフィールドの最大値と最小値を見つけたい。 APIを見て、pluckを使用してvalの配列を取得し、minmaxを実行することを考えていました。

  • オブジェクトにpluckを適用できますか(apiの例ではオブジェクトの配列での使用方法を示しています)
  • より良い方法はありますか?

ありがとう。

23
bsr

コレクションの下にあるすべての関数がオブジェクトリテラルに等しく適用できることを意味しますか?

はい

オブジェクトにpluckを適用できますか(apiの例ではオブジェクトの配列での使用方法を示しています)

試しましたか?はい、できますが、配列を取得します。

より良い方法はありますか?

最小valueを取得するためのMath.min.apply(null, _.pluck(obj, "val"))(または_.min(_.pluck(obj, "val")))は問題ありません。ただし、オブジェクト全体(IDを含む)を取得する場合は、 iteratorパラメーター of min/maxも使用できます。

var lowest = _.min(obj, function(o){return o.val;});
56
Bergi

これを行う別の方法は、すべてが高い値を持つ複数の行を返したい場合に最適です:

_.where(obj, {score: _.max(_.pluck(obj, 'value'))});
0
Matt Fletcher