sar*_*ake 4 javascript arrays underscore.js
假设我有以下结构
var myArrofObjects = [
{prop1:"10", prop2:"20", prop3: "somevalue1"},
{prop1:"11", prop2:"26", prop3: "somevalue2"},
{prop1:"67", prop2:"78", prop3: "somevalue3"} ];
Run Code Online (Sandbox Code Playgroud)
我需要根据prop2找到最小值和最大值,所以这里我的数字是20和78.
你能帮我写下这样做的下划线方式吗?
小智 11
对于像这样的事情,你真的不需要下划线.
Math.max(...arrayOfObjects.map(elt => elt.prop2));
Run Code Online (Sandbox Code Playgroud)
如果你不是ES6那样的人,那么
Math.max.apply(0, arrayOfObjects.map(function(elt) { return elt.prop2; }));
Run Code Online (Sandbox Code Playgroud)
尽量使用相同的方法.
如果你打算同时找到最大值和最小值,那么
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 });
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以使用 _.maxBy 来查找最大值,如下所示。
var maxValObject = _.maxBy(myArrofObjects, function(o) { return o.prop2; });
Run Code Online (Sandbox Code Playgroud)
或使用 iteratee 简写如下
var maxValObject = _.maxBy(myArrofObjects, 'prop2');
Run Code Online (Sandbox Code Playgroud)
类似地还有 _.minBy;
参考: https: //lodash.com/docs/4.17.4#maxBy
使用 _.max 和 _.property:
var max value = _.max(myArrofObjects, _.property('prop2'));
Run Code Online (Sandbox Code Playgroud)