29.09.2009, 15:17
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
map.sort(function(a, b){
return (a[1] - b[1]) || (a[0] - b[0]);
});
|
|
29.09.2009, 16:02
|
Интересующийся
|
|
Регистрация: 09.09.2009
Сообщений: 25
|
|
а описать как работает эта функция можешь?
|
|
29.09.2009, 16:09
|
Интересующийся
|
|
Регистрация: 09.09.2009
Сообщений: 25
|
|
[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]
Последний раз редактировалось Ferroks, 29.09.2009 в 16:12.
|
|
29.09.2009, 16:58
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
В смысле как добавить?
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)
|
|
29.09.2009, 19:18
|
Интересующийся
|
|
Регистрация: 09.09.2009
Сообщений: 25
|
|
не работает такой скрипт;
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);
|
|
30.09.2009, 13:39
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
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, элемента с таким индексов не существует. поэтому была ошибка.
|
|
|
|