обратный json javascript - PullRequest
       11

обратный json javascript

5 голосов
/ 29 ноября 2010

Есть ли недорогой способ реверса:

{
    "10": "..."
    "11": "...",
    "12": "...",
    "13": "...",
    "14": "...",
}

так что я получаю:

{
    "14": "...",
    "13": "...",
    "12": "..."
    "11": "...",
    "10": "...",
}

reverse () не работает с объектами json. Единственный способ, которым я могу придумать, - это перебрать все элементы и создать массив. кажется, что должен быть лучший способ.

Редактировать: спасибо за помощь ОБНОВЛЕНИЕ:

Как насчет того, скажем, если у каждого ключа есть хронологические данные. Когда я использую $ .each для объекта, он пробегает объекты сверху вниз, я не осознавал, что это ненадежно.

Вот что я пытаюсь сделать:

$.each(object, function (key, value) {
  function foo (key, value);
});

Я хочу не запускать foo на всех, кроме трех последних парах, то есть я хочу использовать только последние 3 пары. Я подумал, что если смогу поменять их, я могу просто запустить первые три и остановиться.

Есть ли способ, которым я могу просто сделать последние 3? Если последние 3 порядка ненадежны, есть ли более безопасный способ получить последние 3. Последние 3 будут иметь самые большие цифровые клавиши.

Спасибо.

Редактировать 2: Я в основном решил наконец сделать манипуляции на стороне сервера. Я реорганизую свою базу данных таким образом, чтобы соответствующие поддокументы были заполнены документами, которые можно запрашивать с помощью mongodb. Спасибо.

Ответы [ 4 ]

8 голосов
/ 29 ноября 2010

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

Из Сеть разработчиков Mozilla :

Хотя ECMAScript делает итерацию порядок объектов зависит от реализации, это может Похоже, что все основные браузеры поддерживают порядок итераций, основанный на самое раннее добавленное свойство идет первым (по крайней мере, для свойств не на прототип). Тем не менее, в случае Internet Explorer, когда вы используете удалить на имущество, некоторые сбивают с толку результаты поведения, мешающие другим браузеры от использования простых объектов как объектные литералы в порядке ассоциативные массивы. В проводнике пока значение свойства действительно установлено в не определено, если один позже добавит обратно собственность с тем же именем, свойство будет повторяться в старом положение - не в конце последовательность итераций, как и следовало ожидать после удаления свойства и затем добавил его обратно.

Так что если вы хотите смоделировать заказанный ассоциативный массив в кросс-браузере среда, вы вынуждены либо используйте два отдельных массива (один для ключи и другое для значений), или построить массив из одного свойства предметы и т. д.

3 голосов
/ 21 мая 2013

Используйте это для массивов объектов json

jsonObjectArray.reverse();
$.each(jsonObjectArray, function(i, item) {
    //do something with the item
});

Надеюсь, это поможет

1 голос
/ 15 мая 2012

Следуйте за JSON в обратном порядке,

for(json.length;i>=0;i--)
{
    console.log(json.[i]);
}
1 голос
/ 29 ноября 2010

Это может помочь. Получить все ключи от объектов json в массив, который вы можете отсортировать.

var a = { 1 : 'x', 3 : 'y', 2 : 'z' };
var keys = []
for (i in a) { keys.push(i); }
keys.sort();

тогда вы можете использовать reverse () и slice (), чтобы просто перебирать нужные вам ключи.

$.each(keys, function(idx, key) { 
  // do whatever with a[key]
}); 
...