假设我有以下结构
var myArrofObjects = [
{prop1:"10", prop2:"20", prop3: "somevalue1"},
{prop1:"11", prop2:"26", prop3: "somevalue2"},
{prop1:"67", prop2:"78", prop3: "somevalue3"} ];
我需要根据prop2找到最小值和最大值,所以这里我的数字是20和78.
请你帮我写下这样做的下划线方式吗?
答案 0 :(得分:11)
你真的不需要像这样的下划线。
Math.max(...arrayOfObjects.map(elt => elt.prop2));
如果你不是ES6那样的人,那么
Math.max.apply(0, arrayOfObjects.map(function(elt) { return elt.prop2; }));
使用相同的方法至少。
如果您打算同时查找最大值和最小值,那么
arrayOfObjects .
map(function(elt) { return elt.prop2; }) .
reduce(function(result, elt) {
if (elt > result.max) result.max = elt;
if (elt < result.min) result.min = elt;
return result;
}, { max: -Infinity, min: +Infinity });
答案 1 :(得分:2)
使用_.max和_.property:
var max value = _.max(myArrofObjects, _.property('prop2'));
答案 2 :(得分:1)
使用_.max,如下所示:
var max_object = _.max(myArrofObjects, function(object){return object.prop2})
使用函数作为第二个输入也可以访问对象中的嵌套值。
答案 3 :(得分:1)
您可以使用_.maxBy查找最大值,如下所示。
var maxValObject = _.maxBy(myArrofObjects, function(o) { return o.prop2; });
或使用iteratee简写如下
var maxValObject = _.maxBy(myArrofObjects, 'prop2');
同样也是_.minBy;
答案 4 :(得分:0)
<强>下划线强>
使用_.sortBy(..)按属性
对对象进行排序var sorted = _.sortBy(myArrofObjects, function(item){
return item.prop2;
});
然后你的prop1属性会得到一个排序数组,sorted[0]
是最小值,而sorted[n]
是最大值
普通JS
myArrofObjects.sort(function(a, b) {
return a.prop2 - b.prop2;
})