Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.07.2013, 17:27
mj_nooker вне форума Посмотреть профиль Отправить личное сообщение для mj_nooker Найти все сообщения от mj_nooker
  № 1  
Ответить с цитированием
mj_nooker

Регистрация: Aug 2009
Сообщений: 99
По умолчанию Array.sortOn(): сортирует Number как String [РЕШЕНО]

Привет всем!

Может кто сталкивался с такой проблемой


В цикле заполняю массив:
Код AS1/AS2:
medalsForSort_array[i] = {nameId_num: counter, id_num : id, votes_num: votes};
Передаю сюда id и votes_num как Number.
Естественно, из-за того, что в объекте хранятся нетипизированные данные, при попытке
Код AS1/AS2:
medalsForSort_array.sortOn('votes_num', 2);
я получаю в принципе отсортированный массив, только при этом видно, что сортировка происходила по votes_num как String - тоесть, например 5 > 10.
Но мне надо по votes_num как Number

Пожалуйста, подскажите, есть нормальные, некостыльные, методы побороть?


Последний раз редактировалось mj_nooker; 21.07.2013 в 05:46. Причина: Вопрос решен
Старый 18.07.2013, 18:43
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
http://stackoverflow.com/questions/6...-array-sorting

Старый 18.07.2013, 19:32
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Код AS1/AS2:
medalsForSort_array.sortOn('votes_num', Array.DESCENDING | Array.NUMERIC);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 21.07.2013, 05:44
mj_nooker вне форума Посмотреть профиль Отправить личное сообщение для mj_nooker Найти все сообщения от mj_nooker
  № 4  
Ответить с цитированием
mj_nooker

Регистрация: Aug 2009
Сообщений: 99
Спасибо всем!

Вобщем, так и писал
Код AS1/AS2:
medalsForSort_array.sortOn('votes_num', Array.DESCENDING | Array.NUMERIC);
Из-за чего глючило - из-за того, что свойство 'votes_num' объектов в medalsForSort_array было object, а не Number. Тоесть еще на этапе получения этого значения из XML я забыл указать скрипту, что беру значение, а не ноду.

1) Передавал из парсинга XML:
Код AS1/AS2:
childNodes[i].firstChild
2) В ф-и заполнения массива получал в аргументах в таком виде:
Код AS1/AS2:
(..., votes:Number, ...)
И делал объект
Код AS1/AS2:
var obj:Object = {..., votes_num:votes, ...};
Вот массив и сортировался по votes_num, как по String.

Как только поменял вот так
Код AS1/AS2:
childNodes[i].firstChild.nodeValue
- трейс показал typeOf(votes_num) == number и массив начал сортироваться нормально - ибо матчасть надо помнить железно.

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
array , sortOn
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:08.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.