2012-06-05 332 views
7

我有一個自定義JavaScript對象的數組,它具有一個名爲order的屬性。我有這個對象的數組,我想獲得具有最高「順序」的項目。使用jQuery獲取數組中元素的最大值屬性

因爲我是比較新的jQuery和從C#背景的這是我非常欣賞的LINQ的實例:)

之一反正削減長話短說,我已檢查下面的鏈接,但他們只返回值,而不是數組元素本身的引用...所以有一點幫助改變,返回元素將不勝感激。

jQuery min/max property from array of elements

element with the max height from a set of elements

在考慮中的自定義對象(我具有的陣列)如下:

var severity = function (key, value, order) { 
    this.key = key; 
    this.value = value; 
    this.order = order; 
}; 
+0

給我們的,你有什麼完整的代碼或jsfiddle.net演示。 – gdoron

回答

8

也許我你錯了......但是你在找什麼?

function getHighest(array) { 
    var max = {}; 
    for (var i = 0; i < array.length; i++) { 
     if (array[i].order > (max.order || 0)) 
      max = array[i]; 
    } 
    return max; 
} 

// var array = [object, object, object ...]; 
var highest = getHighest(array); 

DEMO:http://jsfiddle.net/c6gfj/

-1

嘗試:

function getHighest(array, value){ 
    return array.sort(function(a,b){ b[value] - a[value] })[0]; 
} 
+1

排序是很昂貴的找到最大值。你正在做的操作比所需要的多。 – epascarello

+0

你的排序函數沒有返回任何東西,爲了得到'0'的最高值,你需要做比'<'少的比較,儘管減法會更好。 'b [value] - a [value]' – 2012-06-05 13:03:22

+0

@amnotiam - 感謝您的評論。修正了我的答案。 –

0

排序陣列和流行的最後一個對象數組

function sortObj(a, b){ 
    return a.order < b.order ? 0 : 1; 
} 
obj.sort(sortObj) 
var highest =obj.pop(); 

DEMO:http://jsfiddle.net/VaYNb/

0

使用yourarray.sort(),它會在排序升序爲降序。它也適用於二維數組。

0
array[array.map((o)=>o.order).indexOf(Math.max(...array.map((o)=>o.order)))] 

DEMO:

let array=[{order:3},{order:5},{order:2},{order:2}]; 
 

 
console.log(
 
    array[array.map((o)=>o.order).indexOf(Math.max(...array.map((o)=>o.order)))] 
 
)

相關問題