получить последний элемент объекта json в javascript
Я получил объект json в javascript, какvar json = {"20121207":"13", "20121211":"9", "20121213":"7", "20121219":"4"};
не зная названия последнего ключа. (Ключи находятся в порядке возрастания)
Как я могу прочитать значение (и ключ) последнего элемента?
5 ответов
var highest = json[ Object.keys(json).sort().pop() ];
Object.keys
(ES5, shimmable) возвращает массив ключей объекта. Затем мы сортируем их и хватаем последнюю.
вы не можете обеспечить порядок в for..in
петли, поэтому мы не можем полностью полагаться на это. Но, как вы сказали, ключи находятся в порядке возрастания, мы можем просто отсортировать их.
попробуйте это:
var lastKey;
var json = {"20121207":"13", "20121211":"9", "20121213":"7", "20121219":"4"};
for(var key in json){
if(json.hasOwnProperty(key)){
lastKey = key;
}
}
alert(lastKey + ': ' + json[lastKey]);
Если вам не нужно поддерживать старые двигатели JS:
var lastKey = Object.keys(json).sort().reverse()[0];
var lastValue = json[lastKey];
Не думайте, что ключи в порядке. Получите ключи, а затем отсортируйте их, а затем возьмите это наибольшее значение после сортировки.
ключи объектов обычно неупорядочены, но, глядя на набор ключей, который вы используете, я предположил, что вы ищете самую высокую дату в ключах json:
var json = {"20121207":"13", "20121211":"9", "20121213":"7", "20121219":"4"};
function getMaxFromKeys(json) {
var m;
for (var i in json) {
if (json.hasOwnProperty(i)) {
m = (typeof m == 'undefined' || i > m) ? i : m;
}
}
return m;
}
var latestDate = getMaxFromKeys(json);
спецификации сценария ECMCA (спецификации javascript) не требуют, чтобы браузеры поддерживали порядок свойств объекта.
связанный с for-in это то, что ECMCA 5 specs говорят:
"механика и порядок перечисления свойств (Шаг 6.в первый алгоритм, Шаг 7.а во втором) не указывается."
связанные с объектом.метод ключей:
"Если реализация определяется конкретным порядок перечисления для оператор for-in, тот же порядок перечисления должен использоваться на шаге 5 этого алгоритма."
не имеет смысла говорить получить последнее определенное свойство. Вы можете отсортировать свойства на основе имени и получить последний, но если вам нужен порядок, сохраните массив.