Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   порядок сортировки ключей в объекте (https://javascript.ru/forum/css-html/14073-poryadok-sortirovki-klyuchejj-v-obekte.html)

indieman 27.12.2010 18:57

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

Есть функция:
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. Видимо из за того, что ключи там сортируются, а не следуют в заданном порядке. Как можно решить эту проблему?
Спасибо.

Kolyaj 27.12.2010 19:11

У ключей нет заданного порядка. Спецификация языка не обещает, что ключи будут перебираться в том же порядке, в котором были заданы.

indieman 27.12.2010 19:24

Отсортировать нельзя?
Как можно решить эту проблему?
В какую сторону смотреть?

exec 27.12.2010 19:37

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

arr.sort(function (a, b) {
return b - a;
});

indieman 27.12.2010 21:48

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


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