11.04.2013, 22:49
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
вопрос по методу sort
Скажите пожалуйста, можно ли как нибудь в функцию которую вызывает метод sort передать доп.аргументы? Например есть двумерный массив 10х10, мне нужну иметь сортировку по каждой колонке, неужели придется для каждой прописывать свою функцию?
function (a, b) {
return a[n] - b[n];
};
Как можно передать в функцию аргумент n?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Последний раз редактировалось simple, 11.04.2013 в 22:54.
|
|
11.04.2013, 23:14
|
|
Интересующийся
|
|
Регистрация: 05.03.2013
Сообщений: 20
|
|
Двумерный массив 10х10 - это обычный массив из 10 обычных массивов из 10 элементов. Переворачиваем массив (строки в колонки) - сортируем - переворачиваем обратно. Профит.
|
|
11.04.2013, 23:15
|
Интересующийся
|
|
Регистрация: 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;
}
|
|
11.04.2013, 23:23
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
Сообщение от dastingo
|
может попробовать сортировать в цикле
|
Нет, в цикле не пойдет, тем более мне нужна сортировка по столбцу, а не по строке.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
|
|
11.04.2013, 23:27
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
Сообщение от Akalenik
|
Двумерный массив 10х10 - это обычный массив из 10 обычных массивов из 10 элементов. Переворачиваем массив (строки в колонки) - сортируем - переворачиваем обратно. Профит.
|
Спасибо, велосипеды я писать умею, мне хотелось узнать можно ли передать как нибудь доп.аргумент в функцию, но похоже никак.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
|
|
11.04.2013, 23:33
|
Интересующийся
|
|
Регистрация: 30.01.2013
Сообщений: 29
|
|
тогда никак, compare ф-ия от двух аргументов..
|
|
12.04.2013, 00:16
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
Сообщение от dastingo
|
тогда никак, compare ф-ия от двух аргументов..
|
Почему никак? Можно извернуться через свойства объекта, например так.
function compare (a, b) {
return a[compare.idColumn] - b[compare.idColumn];
};
compare.idColumn = 5; // сортируем по 5-му столбцу
array.sort(compare);
кто предложит решение по лучше?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
|
|
12.04.2013, 00:20
|
Профессор
|
|
Регистрация: 01.02.2010
Сообщений: 364
|
|
function getComparator ( n ) {
return function ( a, b ) {
return a[ n ] - b[ n ]
}
}
arr.sort( getComparator( 1 ) )
|
|
12.04.2013, 00:25
|
|
Профессор
|
|
Регистрация: 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.
|
|
|
|