[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка объектов в javascript
Arh
Пишу плагин для браузера, столкнулся с таким багом:
На клиенте получаю от сервера JSON данные, которые сервер отдаёт отсортированными в нужном порядке DESC, но в клиент приходят данные отсортированными в обратном порядке =) ASC
Где то вычитал что браузеры коверкают сортировку кто как.

Если с сервера приходит массив, то нормально
0:{id: "84939", title: "Камера запечатлела, как две машины превратились в груды металла в Подмосковье ",…}
1:{id: "84938", title: "Пассажирский автобус вспыхнул на западе Москвы (видео)",…}


Если ассоциативный массив, то браузер сортирует
"84938":{id: "84938", title: "Пассажирский автобус вспыхнул на западе Москвы (видео)",…}
"84939":{id: "84939", title: "Камера запечатлела, как две машины превратились в груды металла в Подмосковье ",…}


Пришлось менять объекты на массивы, что бы делать сортировку, потому что объекты я так понял не сортируются.
data = data.sort(function (a, b) {
if (a.id < b.id) return 1;
if (a.id > b.id) return -1;
});


Соответственно пришлось еще кучу всего переписать, например условие if (id in data) что бы проверять есть ли уже новость с таким id, превратилась в цикл.
function existID (val, data) {

var result = false;
$.each(data, function (id, row) {
if (row['id'] == val) {
result = true;
}
}
);

return result;

}


В общем 2 дня баги ловлю, но пришла мысль что возможно зря тут изгаляюсь и в js есть сортировка ассоциативных массивов?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Миша
А массив в java разве не объект ))

_____________
Принимаю заказы, писать в ЛС
Arh
Медведь
Ну там как то с ключами это объект, а без ключей просто массив =) хз, странный язык)
Типа


#объект
$arr = [
'name' => 'вася'
];

#массив
$arr[] = 'вася';


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
sergeiss
Цитата (Arh @ 28.03.2016 - 17:20)
Где то вычитал что браузеры коверкают сортировку кто как.

Массивы сортируются "на ура", а вот объекты не гарантируют порядок свойств такой, как ты их заложил.

Цитата (Arh @ 28.03.2016 - 17:45)
Ну там как то с ключами это объект, а без ключей просто массив =) хз, странный язык)

Это говорит о том, что ты не понял его (судя по терминологии) smile.gif

Преобразуй свои данные в массив и сортируй так, как тебе нужно.

А вообще покажи, что именно ты отправляешь с сервера и как принимаешь в браузере.


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Arh
sergeiss
Я не понял, это точно)

Цитата
А вообще покажи, что именно ты отправляешь с сервера и как принимаешь в браузере.

Первые 2 JSON это реальный пример.
Сейчас сделал второй вариант и всё теперь на массивах, но мне нужна была функция типа isset() =), с объектами это in, а когда объекты вложенные, приходится циклом разберать и сравнивать ключи.


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
В общем выложил, вроде даже работает =)

Но голову пришлось поломать с этим js =)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Мне бы узнать как у вас погода отображается и отображается ли вообще?) можете скриншоты сделать, если вы не из Москвы?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.