zma*_*ten 2 javascript sorting math
我需要在JavaScript中执行C#中的内容:
var latest = versions.OrderByDescending( v => v.VersionNo).First();
Run Code Online (Sandbox Code Playgroud)
我希望通过Math.max方法完成这项工作,虽然这应该是一项微不足道的任务,但我正在努力使其正确.我已经浏览了网页和几个问题,但无法使其发挥作用.
T.J*_*der 14
所以基本上,你想找到versions最高的对象VersionNo.
听起来像是一份工作Array#reduce:
var latest = versions.reduce(function(l, e) {
return e.VersionNo > l.VersionNo ? e : l;
});
Run Code Online (Sandbox Code Playgroud)
var versions = [
{VersionNo: 3},
{VersionNo: 7},
{VersionNo: 1}
];
var latest = versions.reduce(function(l, e) {
return e.VersionNo > l.VersionNo ? e : l;
});
console.log(latest);Run Code Online (Sandbox Code Playgroud)
当你按上面的方式调用它时(只有一个参数,即使用的回调),Array#reduce用前两个条目调用你的回调,然后再为每个后续条目调用,第一个参数是前一个调用的返回值,第二个是数组中的下一个条目.结果是最后一个回调的最终返回值.
像泥一样清楚?这意味着,如果你把它用在阵列上[1, 2, 3, 4]你的回调将被调用1, 2,然后r, 3在那里r是什么它返回,然后r, 4在那里r是什么它返回的最后时间.(如果你给一个第二个参数reduce,它使用作为初始值r和少了点r, 1,然后r, 2,...)
所以在上面,我们使用VersionNo回调中的两个参数中的较高者返回对象,这最终将为我们提供具有最高值的第一个参数.(我说"第一个"因为如果你有多个具有相同价值的人,我们将采取第一个.)
或者在ES2015 +中:
let latest = versions.reduce((l, e) => e.VersionNo > l.VersionNo ? e : l);
Run Code Online (Sandbox Code Playgroud)
let versions = [
{VersionNo: 3},
{VersionNo: 7},
{VersionNo: 1}
];
let latest = versions.reduce((l, e) => e.VersionNo > l.VersionNo ? e : l);
console.log(latest);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4403 次 |
| 最近记录: |