2012-06-05 7 views
7

Mam tablicę niestandardowego obiektu JavaScript, który ma właściwość o nazwie order. Mam tablicę tego obiektu i chcę uzyskać przedmiot o najwyższym "zamówieniu".Pobierz element w tablicy z maksymalną wartością właściwości za pomocą jQuery

Ponieważ jestem stosunkowo nowy jQuery i pochodzących z tła C# to jeden z przypadków, gdzie wysoko cenią LINQ :)

W każdym razie, do cięcia długie opowiadanie, mam zaznaczone podążając za odnośnikami, ale zwracają tylko wartość, a nie odwołanie do samego elementu tablicy ... Tak więc niewielka pomoc w zmianie tego elementu, aby zwrócić element, byłaby doceniana.

jQuery min/max property from array of elements

element with the max height from a set of elements

Zwyczaj obiekt na pytanie (które mam tablicę) przedstawia się następująco:

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

Daj nam pełny kod co masz lub demo jsfiddle.net. – gdoron

Odpowiedz

8

Może pomyliłeś się ... ale czy tego szukasz?

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

spróbuj tego:

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

sortowanie jest drogie, aby znaleźć maksymalną wartość. Robisz więcej operacji niż to, co jest potrzebne. – epascarello

+0

Twoja funkcja sortująca niczego nie zwraca, a aby uzyskać najwyższą wartość w indeksie '0', musisz wykonać mniej niż porównanie' <', chociaż odejmowanie byłoby lepsze. 'b [wartość] - a [wartość]' –

+0

@amnotiam - dzięki za komentarz. poprawiono moją odpowiedź. –

0

Sortowanie tablicy i pop ostatni obiekt w tablicy

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

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

0

użycie yourarray.sort() będzie rozwiązać w rosnąco do malejących order.its również dla tablic 2D.

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)))] 
 
)

Powiązane problemy