强调查找对象值的最小值和最大值

时间:2013-04-06 13:10:27

标签: javascript underscore.js

根据教程here

  

集合可以是数组或对象,也可以是关联数组   在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应用于object(因为api示例显示了在对象数组中的使用)
  • 有更好的方法吗?

感谢。

3 个答案:

答案 0 :(得分:55)

  

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

Yes

  

我可以将pluck应用于object(因为api示例显示了在对象数组中的使用)

你试过吗?是的,你可以,但你会得到一个阵列。

  

有更好的方法吗?

获取最小

Math.min.apply(null, _.pluck(obj, "val"))(或_.min(_.pluck(obj, "val")))很好。然而,如果你想获得整个对象(带有id),你也可以使用最小/最大的iterator parameter

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

不需要花哨。只需使用map函数创建目标值数组,然后使用_min查找最小值。

标准

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

<强> ES6

let minimum = _.min(data.map((rec) => {return rec.val}))