Javascript 下划线用于查找对象值的最小值和最大值
根据教程 集合可以是数组,也可以是对象(关联数组) 在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
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示例所示,它在对象数组中的用法)
- 有更好的办法吗
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))