Получить элемент массива с максимальным значением свойства с помощью jQuery

у меня есть массив пользовательских объектов JavaScript, который имеет свойство с именем order. У меня есть массив этого объекта, и я хочу получить элемент с самым высоким "порядком".

поскольку я относительно новичок в jQuery и исхожу из фона C#, это один из случаев, когда я высоко ценю LINQ :)

Короче говоря, я проверил следующие ссылки, но они возвращают только значение, а не ссылку на сам элемент массива... Так небольшая помощь в изменении этого, чтобы вернуть элемент, была бы оценена.

свойство jQuery min / max из массива элементов

элемент с максимальной высотой из набора элементов

пользовательский объект(который у меня есть массив) выглядит следующим образом:

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

5 ответов


может, я тебя неправильно понял... но что вы ищете?

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

демо: http://jsfiddle.net/c6gfj/


сортировка массива и всплывание последнего объекта в массиве

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

демо:http://jsfiddle.net/VaYNb/


используйте yourarray.sort().он будет отсортирован по возрастанию в порядке убывания.он также действителен для 2-D массивов.


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

попробуйте это:

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