JavaScript:сортировка ассоциативных массивов #181195


#0 by Гений 1С
Граждане, больной вопрос. Есть ассоциативный массив: {1:"Иванов", 2:"Петров", 3:"Сидоров"} Т.е. массив кода человека и его фамилии. Нужно отсортировать по фамилии, ну а потом по кодам вытащить связную информацию. Если я заведу массив: Array("Иванов", "Петров", "Сидоров") я конечно отсортирую по фамилии, но из фамилии я не могу получить код, т.е. выгрузка в массив вопроса не решает. А ассоциативный массив не имеет метода сортировки. Неужели писать пузырек для ассоциативного? Может у кого готовый код есть по сортировке хэшей?
#1 by Андрюха
"Тигр в пустыне"
#2 by Гений 1С
чиво?
#3 by Андрюха
Упс... :-
#4 by Слоняра
откуда ты такие слова умные берешь? "эстиматор, ассоциативный".. и проблемы из пальца высасываешь..
#5 by PVasili
Заведи ветку учусь работать с Аутлуком. У тебя получается каждый чих - проблема...
#6 by WiFi 2
можно и без пузырей обойтись. Заведи массив: Array("Иванов, 1", "Петров, 2", "Сидоров, 3", ... "Пупкин, 125"), Отсортируй и верни все как было ;)
#7 by Гений 1С
ну не знаю, из пальца или нет, код получился такой: <html> <head> <title>join</title> <SCRIPT language=JavaScript type=text/JavaScript> function HashSort(Hash, Field) {    var Res=new Array;    var TmpValues=new Array;    var TmpKeys=new Array;    var Weights=new Array;    var counter=0;    for (var HashKey in Hash) {        TmpValues[counter]=Hash[HashKey][Field];        TmpKeys[counter]=HashKey;        Weights[counter]=counter;        counter++;    }    //Find position for item    for (var i=0; i < counter; i++) {        for (var j=i+1; j < counter; j++) {            if (TmpValues[i] > TmpValues[j]) {                Weights[i]++;                Weights[j]--;            }        }        Res[Weights[i]]=TmpKeys[i];    }    return Res; } var n={    "Второй":{"ord":2},    "Первый":{"ord":1},    "Седьмой":{"ord":7},    "Шестой":{"ord":6},    "Четвертый":{"ord":4},    "Третий":{"ord":3},    "Пятый":{"ord":5},    "Восьмой":{"ord":8},    "Девятый":{"ord":9},    "Десятый":{"ord":10} }; function Dump(d,l) {    if (l == null) l = 1;    var s = '';    if (typeof(d) == "object") {        s += typeof(d) + " { ";        for (var k in d) {            for (var i=0; i<l; i++) s += "  ";            s += k+": " + Dump(d[k],l+1);        }        for (var i=0; i<l-1; i++) s += "  ";        s += "} "    } else {        s += "" + d + " ";    }    return s; } document.write(Dump(n)); document.write("<HR>"); Res=HashSort(n, "ord"); document.write("" + Res.join(";")); </script> </head> </body> </html>
#8 by Гений 1С
я такие подходы не люблю, кривой он... как одноразовый шпрыц... :)
#9 by WiFi 2
согласен :) я тоже не люблю. Называется структурное программирование ;)
#10 by smaharbA
В перле возможно, в джскрипте никогда и не думал, проста пользовал многомерные массивы, но вот ведь правдо, а как ?
#11 by Одноэсник
давно тебя не видел, как жисть молодая?
#12 by smaharbA
так к себе, а ты (Вы) кто ?
#13 by smaharbA
А зачем сортировать еще вопрос ? var ord=new Object; var nn=new Object; nn.Первый=ord; nn.Первый.ord=1; nn.Второй=ord; nn.Второй.ord=2; alert(nn.Второй.ord);
Тэги: Веб-мастеринг
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С