假设我有如下结构
var myArrofObjects = [
{prop1:"10", prop2:"20", prop3: "somevalue1"},
{prop1:"11", prop2:"26", prop3: "somevalue2"},
{prop1:"67", prop2:"78", prop3: "somevalue3"} ];
我需要根据prop2找到最小值和最大值,所以这里我的数字是20和78。
我如何在下划线中编写代码来做到这一点?
对于这样的内容,实际上不需要下划线。
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 });
您可以使用_。
var maxValObject = _.maxBy(myArrofObjects, function(o) { return o.prop2; });
或使用如下所示的被迭代对象简写
var maxValObject = _.maxBy(myArrofObjects, 'prop2');
类似于_。
裁判:https://lodash.com/docs/4.17.4 maxBy
use _。Max and _property:
var max value = _.max(myArrofObjects, _.property('prop2'));
使用
var max_object = _.max(myArrofObjects, function(object){return object.prop2})
使用函数作为第二个输入将允许您访问对象中的嵌套值。
下划线
使用_.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;
})