11.02.2012, 15:09
|
Кандидат Javascript-наук
|
|
Регистрация: 17.03.2011
Сообщений: 113
|
|
Сортировка многомерных массивов
Написал такой код код:
var db=[
["Total Commander",true],
["WinRAR",true],
["CCleaner",false],
["AIMP3",false]
]
function draw(){
db.sort() // Вот сюда нужно функцию прикрутить. Пример - db.sort(myFunc)
var body=document.getElementsByTagName("body")[0]
var table=document.createElement("table")
for(var x=0;x<db.length;x++){
var tr=document.createElement("tr")
var td=document.createElement("td")
td.innerText=db[x][0]
tr.appendChild(td)
var td=document.createElement("td")
td.innerText=db[x][1]
tr.appendChild(td)
table.appendChild(tr)
}
body.appendChild(table)
}
draw()
Надо написать функцию для сортирования по одному из элементов массива (либо по текстовому значению, либо по true/false или т.п.). Также приветствую уже готовые функции сортировки для sort().
|
|
11.02.2012, 15:12
|
Профессор
|
|
Регистрация: 10.02.2012
Сообщений: 254
|
|
Ваши предложения и сроки выполнения?
шутка, обьясни что тебе надо подробнее может я помогу тебе
|
|
11.02.2012, 15:22
|
Кандидат Javascript-наук
|
|
Регистрация: 17.03.2011
Сообщений: 113
|
|
Сообщение от Mахmахmахimus
|
обьясни что тебе надо подробнее может я помогу тебе
|
Ну обычная сортировка если применить к многомерному массиву то она все сортирует по очереди - сначала по первому элементу, потом по второму.
Пример:
var db=[
["A","B"],
["B","B"],
["B","A"],
["A","A"]
]
db.sort()
Результат сортировки:
["A","A"],
["A","B"],
["B","A"],
["B","B"]
Нужно указать сортировку по вторым буквам из массива.
|
|
11.02.2012, 15:42
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
var db=[
["A","B"],
["B","B"],
["B","A"],
["A","A"]
]
db.sort(function(a,b){
if (a[1] < b[1]){
return -1;
}else if (a[1] > b[1]) {
return 1;
}else{
return 0;
}
})
alert(db.join('\n'))
__________________
29375, 35
Последний раз редактировалось Aetae, 11.02.2012 в 15:45.
|
|
11.02.2012, 15:51
|
Профессор
|
|
Регистрация: 10.02.2012
Сообщений: 254
|
|
var db=[
["A","B"],
["B","B"],
["B","A"],
["A","A"]
]
db.sort(function(a,b){
return a[1] > b[1]
})
alert(db.join('\n'))
|
|
11.02.2012, 15:52
|
Кандидат Javascript-наук
|
|
Регистрация: 17.03.2011
Сообщений: 113
|
|
Первые значения массива не отсортированы. Но дальше сам доделаю. Спасибо
Последний раз редактировалось Bebarr Swallow, 11.02.2012 в 15:54.
|
|
11.02.2012, 15:55
|
Профессор
|
|
Регистрация: 10.02.2012
Сообщений: 254
|
|
Сообщение от Bebarr Swallow
|
Нужно указать сортировку по вторым буквам из массива.
|
Сообщение от Bebarr Swallow
|
Первые значения массива не отсортированы.
|
правда что ли? не может быть такого!
|
|
11.02.2012, 16:14
|
|
:-/
|
|
Регистрация: 28.09.2009
Сообщений: 1,126
|
|
var db=[
["A","B"],
["B","B"],
["B","A"],
["A","A"]
]
function sortArr(a,b){
if (a[1] < b[1]){
return -1;
}else if (a[1] > b[1]) {
return 1;
}else{
if (a[0] < b[0]) {
return -1;
}
else if (a[0] > b[0]) {
return 1;
}
else {
return 0;
}
}
}
db.sort(sortArr)
alert(db.join('\n'))
|
|
11.02.2012, 17:58
|
Профессор
|
|
Регистрация: 10.02.2012
Сообщений: 254
|
|
держи братишка, s - номер ведущего столбца, и спасибо что в карму минусанул...
var db = [ [ "3", "2", "A" ],
[ "2", "4", "A" ],
[ "1", "1", "B" ],
[ "4", "3", "B" ] ];
var s = prompt('номер основного столбца') || 0;
db.sort(function(a, b) {
return a[s] == b[s] ? a > b : a[s] > b[s]
});
alert(db.join('\n'));
Последний раз редактировалось Mахmахmахimus, 11.02.2012 в 18:35.
|
|
11.02.2012, 18:28
|
Интересующийся
|
|
Регистрация: 11.02.2012
Сообщений: 26
|
|
Mахmахmахimus, + 1
только дефаут значение желательно указать.
|
|
|
|