map.sort(function(a, b){ return (a[1] - b[1]) || (a[0] - b[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],[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] |
В смысле как добавить?
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) |
не работает такой скрипт;
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); |
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. |