[英]Get object from array by max property
我需要在JavaScript中執行C#中的內容:
var latest = versions.OrderByDescending( v => v.VersionNo).First();
我希望通過Math.max方法完成這項工作,雖然這應該是一項微不足道的任務,但我正在努力使其正確。 我已經瀏覽了網頁和幾個問題,但無法使其發揮作用。
基本上,您希望在具有最高VersionNo
versions
找到該對象。
聽起來像Array#reduce
:
var latest = versions.reduce(function(l, e) {
return e.VersionNo > l.VersionNo ? e : l;
});
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);
當你按上面的方式調用它時(只有一個參數,即使用的回調), Array#reduce
用前兩個條目調用你的回調,然后再為每個后續條目調用,第一個參數是前一個調用的返回值,第二個是數組中的下一個條目。 結果是最后一個回調的最終返回值。
像泥一樣清楚? 這意味着如果你在一個帶有[1, 2, 3, 4]
的數組上調用它[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);
let versions = [ {VersionNo: 3}, {VersionNo: 7}, {VersionNo: 1} ]; let latest = versions.reduce((l, e) => e.VersionNo > l.VersionNo ? e : l); console.log(latest);
您可以使用以下內容獲取對象中屬性的最大值
var latest = (Math.max.apply(Math, versions.map(function(v) {
return v.VersionNo;
})));
有關.map()
文檔https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
這有很多答案。 由於您沒有指定我可以顯示多個選項:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.