Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.04.2013, 22:49
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

вопрос по методу sort
Скажите пожалуйста, можно ли как нибудь в функцию которую вызывает метод sort передать доп.аргументы? Например есть двумерный массив 10х10, мне нужну иметь сортировку по каждой колонке, неужели придется для каждой прописывать свою функцию?
function (a, b) {
    return a[n] - b[n];
};

Как можно передать в функцию аргумент n?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются

Последний раз редактировалось simple, 11.04.2013 в 22:54.
Ответить с цитированием
  #2 (permalink)  
Старый 11.04.2013, 23:14
Аватар для Akalenik
Интересующийся
Отправить личное сообщение для Akalenik Посмотреть профиль Найти все сообщения от Akalenik
 
Регистрация: 05.03.2013
Сообщений: 20

Двумерный массив 10х10 - это обычный массив из 10 обычных массивов из 10 элементов. Переворачиваем массив (строки в колонки) - сортируем - переворачиваем обратно. Профит.
Ответить с цитированием
  #3 (permalink)  
Старый 11.04.2013, 23:15
Интересующийся
Отправить личное сообщение для dastingo Посмотреть профиль Найти все сообщения от dastingo
 
Регистрация: 30.01.2013
Сообщений: 29

может попробовать сортировать в цикле
var arr = [
      [7, 6, 5],
      [17, 16, 15],
   ];
   
   var arrSorted = [];
   for ( var i=0; i<arr.length; i++ ) {
      arrSorted.push( arr[i].sort( compNums ) );
   }

   console.log( arrSorted );

   function compNums( a, b ) {
      return a - b;
   }
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2013, 23:23
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Сообщение от dastingo Посмотреть сообщение
может попробовать сортировать в цикле
Нет, в цикле не пойдет, тем более мне нужна сортировка по столбцу, а не по строке.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #5 (permalink)  
Старый 11.04.2013, 23:27
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Сообщение от Akalenik Посмотреть сообщение
Двумерный массив 10х10 - это обычный массив из 10 обычных массивов из 10 элементов. Переворачиваем массив (строки в колонки) - сортируем - переворачиваем обратно. Профит.
Спасибо, велосипеды я писать умею, мне хотелось узнать можно ли передать как нибудь доп.аргумент в функцию, но похоже никак.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #6 (permalink)  
Старый 11.04.2013, 23:33
Интересующийся
Отправить личное сообщение для dastingo Посмотреть профиль Найти все сообщения от dastingo
 
Регистрация: 30.01.2013
Сообщений: 29

тогда никак, compare ф-ия от двух аргументов..
Ответить с цитированием
  #7 (permalink)  
Старый 12.04.2013, 00:16
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Сообщение от dastingo Посмотреть сообщение
тогда никак, compare ф-ия от двух аргументов..
Почему никак? Можно извернуться через свойства объекта, например так.
function compare (a, b) {
   return a[compare.idColumn] - b[compare.idColumn];
};
compare.idColumn = 5; // сортируем по 5-му столбцу
array.sort(compare);

кто предложит решение по лучше?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #8 (permalink)  
Старый 12.04.2013, 00:20
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

function getComparator ( n ) { 
  return function ( a, b ) {
    return a[ n ] - b[ n ]
  }
}
arr.sort( getComparator( 1 ) )
Ответить с цитированием
  #9 (permalink)  
Старый 12.04.2013, 00:25
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Сообщение от nikita.mmf Посмотреть сообщение
function getComparator ( n ) { 
  return function ( a, b ) {
    return a[ n ] - b[ n ]
  }
}
arr.sort( getComparator( 1 ) )
красиво, мне нравится, возьму на вооружение.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются

Последний раз редактировалось simple, 12.04.2013 в 00:31.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по методу в ООП devenge Events/DOM/Window 8 21.07.2012 16:09
Ajax к методу класса в php karmis AJAX и COMET 5 02.05.2012 18:45
Вопрос по методу send() DmitryT AJAX и COMET 11 23.06.2011 09:59
вопрос по методу pop() Bogdan808 Общие вопросы Javascript 9 21.08.2010 17:54