Reputation: 8266
I have an array of a custom JavaScript object which has a property named order
. I have an array of this object, and I want to get the item with the highest "order".
Since I'm relatively new to jQuery, and coming from a C# background this is one of the instances where I highly appreciate LINQ :)
Anyway, to cut a long story short, I've checked the following links but they only return the value and not a reference of the array element itself... So a little help in changing that to return the element would be appreciated.
jQuery min/max property from array of elements
element with the max height from a set of elements
The custom object in question(which I have an array of) is as follows:
var severity = function (key, value, order) {
this.key = key;
this.value = value;
this.order = order;
};
Upvotes: 7
Views: 10825
Reputation: 93203
array[array.map((o)=>o.order).indexOf(Math.max(...array.map((o)=>o.order)))]
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)))]
)
Upvotes: 2
Reputation: 25270
try this:
function getHighest(array, value){
return array.sort(function(a,b){ b[value] - a[value] })[0];
}
Upvotes: -1
Reputation: 563
use yourarray.sort().it will sort in ascending to descending order.its valid for 2-D arrays also.
Upvotes: 0
Reputation: 171669
Sort array and pop the last object in array
function sortObj(a, b){
return a.order < b.order ? 0 : 1;
}
obj.sort(sortObj)
var highest =obj.pop();
DEMO: http://jsfiddle.net/VaYNb/
Upvotes: 0
Reputation: 145408
Maybe I got you wrong... but is that you are looking for?
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/
Upvotes: 9