Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.12.2010, 18:57
Новичок на форуме
Отправить личное сообщение для indieman Посмотреть профиль Найти все сообщения от indieman
 
Регистрация: 27.12.2010
Сообщений: 3

порядок сортировки ключей в объекте
Добрый день.

Есть функция:
function getPercent(type, crcy, sum, daysCount) {
    
    var percent = [];
   
    percent['rur'] = {1000000:{362:0, 331:8.25, 241:8, 181:7.75, 91:6.5, 0:0},
        5000:{362:0, 331:8, 241:7.75, 181:7.50, 91:6, 0:0},
        0:{362:0, 331:0, 241:0, 181:0, 91:0, 0:0}};
 
    percent['usd'] = [];
    percent['eur'] = [];

    for (var sumKey in percent[crcy]) {
        console.log(sumKey);
        if (sum >= sumKey) {
            for (var key in percent[crcy][sumKey]) {
                console.log('|'.key);
                if (key <= daysCount) {
                    return percent[crcy][sumKey][key];
                }
            }
        }
    }

    return 'false';
}

var perc = getPercent(1, 'rur', 5000, 250);
alert(perc);
var perc = getPercent(1, 'rur', 100000, 500);
alert(perc);


Правильно работает в firefox, ie. Не работает в chrome. Видимо из за того, что ключи там сортируются, а не следуют в заданном порядке. Как можно решить эту проблему?
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.12.2010, 19:11
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

У ключей нет заданного порядка. Спецификация языка не обещает, что ключи будут перебираться в том же порядке, в котором были заданы.
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2010, 19:24
Новичок на форуме
Отправить личное сообщение для indieman Посмотреть профиль Найти все сообщения от indieman
 
Регистрация: 27.12.2010
Сообщений: 3

Отсортировать нельзя?
Как можно решить эту проблему?
В какую сторону смотреть?
Ответить с цитированием
  #4 (permalink)  
Старый 27.12.2010, 19:37
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

Собираете ключи в массив и сортируете их по убыванию:

arr.sort(function (a, b) {
return b - a;
});
Ответить с цитированием
  #5 (permalink)  
Старый 27.12.2010, 21:48
Новичок на форуме
Отправить личное сообщение для indieman Посмотреть профиль Найти все сообщения от indieman
 
Регистрация: 27.12.2010
Сообщений: 3

Спасибо. Пока решил с тем что есть, работает. Но правильное направление понял :-)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск