Я получаю некоторую информацию по запросу в javascript.

У меня есть переменная json: например, var response.

Тогда у каждого из них есть элемент даты обновления:

response[0].updateDate 

Является updateDate первого элемента моего ответа.

Как найти элемент с последним updateDate?

Я могу сделать что-то вроде:

var actualElement = 0
for(var i = 0; i < response.length; i++){
    if(response[actualElement].updateDate < response[i].updateDate){
        actualElement = i;
    }
}

Вы более эффективное решение?

1
anubis 6 Янв 2017 в 15:37

3 ответа

Лучший ответ

Сортировка - не самое быстрое решение (хотя и самое красивое), потому что оно должно повторяться дважды. Если вы просто хотите последнее, вы также можете использовать что-то вроде:

response.reduce((max, c) => max.updateDate > c.updateDate ? max : c, response[0]);

Это если производительность является обязательным для вас.

PS . Или без функций стрелок:

response.reduce(function(max, c) {
    return max.updateDate > c.updateDate ? max : c;
}, response[0]);
1
Luan Nico 6 Янв 2017 в 12:56

Поскольку эта стратегия используется библиотекой UnderscoreJS (широко используется), я сказал бы, что это самый быстрый. Было бы еще лучше, если бы ваш сервер мог заказать массив для вас, чтобы вы могли знать заранее, что первым элементом является тот, который вы ищете.

0
ValLeNain 6 Янв 2017 в 12:47

Просто отсортируй и получи первый

response.sort((a, b) => b.updateDate - a.updateDate)
response[0]
0
Lucas Katayama 6 Янв 2017 в 12:47