Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Сортировка объектов в javascript
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




Пишу плагин для браузера, столкнулся с таким багом:
На клиенте получаю от сервера 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 есть сортировка ассоциативных массивов?


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Медведь  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 2482
Пользователь №: 37963
На форуме: 3 года, 4 месяца
Карма: 27




А массив в java разве не объект ))


--------------------

Заходил 29.09.2016
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




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


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

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


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14980
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 5 дней
Карма: 444




Цитата (Arh @ 28.03.2016 - 17:20)
Где то вычитал что браузеры коверкают сортировку кто как.

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

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

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

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

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


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

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

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

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




sergeiss
Я не понял, это точно)

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

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


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




В общем выложил, вроде даже работает =)

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


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2110
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев, 9 дней
Карма: 70




Мне бы узнать как у вас погода отображается и отображается ли вообще?) можете скриншоты сделать, если вы не из Москвы?


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса