получить последний элемент объекта 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 этого алгоритма."

не имеет смысла говорить получить последнее определенное свойство. Вы можете отсортировать свойства на основе имени и получить последний, но если вам нужен порядок, сохраните массив.