Javascript 下划线用于查找对象值的最小值和最大值

Javascript 下划线用于查找对象值的最小值和最大值,javascript,underscore.js,Javascript,Underscore.js,根据教程 集合可以是数组,也可以是对象(关联数组) 在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,我想使用pull获取val数组,然后执行min和max 我可以将Pul

根据教程

集合可以是数组,也可以是对象(关联数组) 在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,我想使用
pull
获取
val
数组,然后执行
min
max

  • 我可以将Pull应用于对象吗(如api示例所示,它在对象数组中的用法)
  • 有更好的办法吗
谢谢

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

我可以将Pull应用于对象吗(如api示例所示,它在对象数组中的用法)

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

有更好的办法吗

Math.min.apply(null,j.pulk(obj,“val”)))
(或
uj.min(j.pulk(obj,“val”))
)用于获取最小值是可以的。但是,如果您想要获得整个对象(具有id),您也可以使用min/max:

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

另一种方法是,如果您想返回多个都具有高值的行,那么最好这样做:

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

没必要太花哨了。只需使用
map
函数创建一个目标值数组,并使用
\u min
查找最小值

标准

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

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

简单的js过滤器与数学。也许吧?回答得很好。谢谢在最新的Lodash版本中,Pulk替换为uz.map。示例如下:u.min(.map(obj,“val”))很好的答案我得到了这个表单
var min=(u.min(val,函数(o){return o.displayorder;})).displayorder动态创建的具有不同键的对象如何?@tdelam抱歉,我不确定你的意思。您能在这里提供一个示例输入吗?可以进一步将ES6简化为“隐式返回”(implicit return),去掉大括号和return语句(尽管这种头韵语法会降低代码的可读性)。设minimum=u.min(data.map((rec)=>rec.val))