Изменение порядка объектов в массиве объектов

0

У меня есть объект json, который выглядит примерно так:

{
    posts: [
        {id: 56, title: 'something', date: '10-10-10 00:00:00'},
        {id: 57, title: 'Apples', date: '10-10-16 00:00:00'},
    ]
}

И я пытаюсь научиться манипулировать структурами данных в Javascript. Я хотел бы использовать jquery для их изменения на основе атрибутов posts, поэтому вы можете изменить порядок на основе даты, названия или идентификатора (по умолчанию это id).

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

Будет ли получившийся результат быть в той же структуре? Как мне создать коллекцию моделей, основанных на таком "переупорядочении".

Идея состоит в том, чтобы разрешить редактирование и публикацию одной модели в коллекции, основанную на атрибуте, используемом для повторного заказа или "сортировки" коллекции, что позволяет ускорить обработку - поэтому мне не всегда приходится передавать всю коллекцию на сервер, когда я просто хочу обновить одну модель в коллекции.

  • 3
    Поскольку желаемая структура является объектом с ключами, она не может быть отсортирована, поскольку в объектах нет порядка.
  • 0
    Обновлен вопрос, чтобы добавить больше вариантов ответов @adeneo
Показать ещё 2 комментария
Теги:

1 ответ

0

Взгляните на метод array.sort JavaScript. Он может делать то, что вы хотите.

var posts = [{"id": 57, "title": "something"}, {"id": 56, "title": "something else"}];
posts.sort(function(a, b) { if (a.id < b.id) { return -1; } else { return 1; } });
for (var i=0; i<posts.length-1; i++) {
    console.log(posts[i].title);
}
// prints "something else" followed by "something"

Метод sort принимает функцию, которая передает два элемента: a и b, и вы можете вернуть -1, если a меньше b, 0, если они равны, и 1, если a больше b.

Обратите внимание, что вышеперечисленные мои posts являются просто упрощенной версией того, что будет o.posts если ваш описанный JSON был сохранен в o. Также обратите внимание, что sort сортируется на месте, то есть она изменит массив, над которым он работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню