24

按照这里的教程,

集合可以是数组也可以是对象,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 示例显示在对象数组中的使用)
  • 有没有更好的办法?

谢谢。

4

3 回答 3

56

这是否意味着集合下的所有函数都同样适用于对象文字?

的。

我可以将 pluck 应用于对象吗(如 api 示例显示在对象数组中的使用)

你试过了吗?是的,你可以,但你会得到一个数组。

有没有更好的办法?

Math.min.apply(null, _.pluck(obj, "val"))(或_.min(_.pluck(obj, "val")))获得最小值可以了。但是,如果您想获取整个对象(带有 id),您还可以使用min/maxiterator参数

var lowest = _.min(obj, function(o){return o.val;});
于 2013-04-06T13:28:38.123 回答
0

这样做的另一种方法,如果你想返回多行都具有很高的价值,那就太好了,是这样的:

_.where(obj, {score: _.max(_.pluck(obj, 'value'))});
于 2015-10-20T15:22:48.690 回答
-1

没必要花哨。只需使用该函数创建一个目标值数组map并使用它_min来查找最小值。

标准

var minimum = _.min(data.map(function(rec) {return rec.val}))

ES6

let minimum = _.min(data.map((rec) => {return rec.val}))
于 2018-04-05T02:31:27.697 回答