Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка массива (https://javascript.ru/forum/misc/5104-sortirovka-massiva.html)

e1f 29.09.2009 15:17

map.sort(function(a, b){
    return (a[1] - b[1]) || (a[0] - b[0]);
});

Ferroks 29.09.2009 16:02

а описать как работает эта функция можешь?

Ferroks 29.09.2009 16:09

[6,16,0,0],[7,16,0,1],[8,16,0,2],[9,16,0,7],[10,16,0,4],[11,16,0,5],[12,16,0,6],[13,16,0,3],[7,17,0,9],[8,17,0,10],[9,17,0,11],[10,17,0,12] - теперь еще бы такую чтуку сделать,
например минимальный i в map[[i,j,0,0]] равен 4 а максимальный i равен 15, как бы добавить недостающие элементы в массив.

чтоб получилось

[4,16,0,0],[5,16,0,0],[6,16,0,0],[7,16,0,1],[8,16,0,2],[9,16,0,7],[10,16,0,4],[11,16,0,5],[12,16,0,6],[13,16,0,3],[14,16,0,0],[15,16,0,0],[4,17,0,0],[5,17,0,0],[6,17,0,0],[7,17,0,9],[8,17,0,10],[9,17,0,11],[10,17,0,12],[11,17,0,0],[12,17,0,0],[13,17,0,0],[14,17,0,0],[15,17,0,0]

e1f 29.09.2009 16:58

В смысле как добавить?
function map_sort(a,b) {
    return (a[1] - b[1]) || (a[0] - b[0]);
}
map.push([4,16,0,0], [5,16,0,0], ..., [15,17,0,0]).sort(map_sort);

А как работает Array().sort -- почитайте документацию. Метод перебирает элементы, сортируя в соответствии со значением, которое возвращает сортирующая функция-индикатор (<=>0)

Ferroks 29.09.2009 19:18

не работает такой скрипт;

var map=[[6,16,0,0],[7,16,0,1],[8,16,0,2],[9,16,0,3],[10,16,0,4],[11,16,0,5],[12,16,0,6],[13,16,0,7],[6,17,0,8],[7,17,0,9],[8,17,0,10],[9,17,0,11],[10,17,0,12],[11,17,0,13],[12,17,0,14],[13,17,0,15],[6,18,0,16],[7,18,0,17],[8,18,0,18],[9,18,0,19],[10,18,0,20],[11,18,0,21],[12,18,0,22],[13,18,0,23],[6,19,0,24]];
//var min=0;
var min=map[0][0];
var max=map[0][0];
for (i=0;i<=map.length;i++)
{
if (map[i][0]<min)
{
min=map[i][0];
}
else if (map[i][0]>max)
{
max=map[i][0];
}
}
alert(min);
alert(max);

e1f 30.09.2009 13:39

var _min = map[0][0], _max = map[0][0];
for (var i=map.length; i--; ) {
    if (map[i][0] < _min) _min = map[i][0];
    else if (map[i][0] > _max) _max=map[i][0];
}

У Вас было i<=map.length, элемента с таким индексов не существует. поэтому была ошибка.


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