Есть функция sort(fn)
. Как не проверяя результат, узнать в какую сторону сортируется массив (увеличение или уменьшение)?
let d = [1, 2, 4, 5, 7, 15, 10, 3, 0,]
console.log( d.sort( (a, b) => {
if(a > b){
return 1 // предполагаю в сторону увеличения
}
} ) );
let d = [1, 2, 4, 5, 7, 15, 10, 3, 0,]
console.log( d.sort( (a, b) => {
if(a < b){
return -1 // предполагаю в сторону уменьшения
}
} ) );
Обновил ответ
При сортировке, ф-я sort() определяет позицию индекса для элементов с помощью вызова функции сравнения, переданного ей в качестве агрумента, которая принимает два параметра a
и b
.
Если вызванная ф-я сравнения, для переданных аргументов, возвращает значения:
больше 0
- значит индекс элемента, в отсортированном массиве, для аргумента a
будет больше чем у b
меньше 0
- значит индекс элемента, в отсортированном массиве, для аргумента a
будет меньше чем у b
0
- аргументы равны и в текущей итерации изменение значения индекса производится не будет. Отсортировать по возрастанию:
let d = [1, 2, 4, 5, 7, 15, 10, 3, 0,]
console.log( d.sort( (a, b) => {
return a - b;
} ) );
Результат: [0, 1, 2, 3, 4, 5, 7, 10, 15]
Отсортировать по убыванию:
let d = [1, 2, 4, 5, 7, 15, 10, 3, 0,]
console.log( d.sort( (a, b) => {
return b - a;
} ) );
Результат: [15, 10, 7, 5, 4, 3, 2, 1, 0]
Для таких простых сортировок по одному вызову ф-и, можно определить порядок сортировки:
if (fn(1, 2) > 0) {
console.log("По возвраствнию");
} else {
console.log("По убыванию");
}
Но алгоритм для сортировки может быть непростыми, например такой - в отсортированном массиве вначале идут четные значения по-возрастанию, а после - нечетные по-убыванию:
let d = [1, 2, 4, 5, 7, 15, 10, 3, 0,]
console.log( d.sort( (a, b) => {
if (a === b ) {
return 0;
} else if (a % 2 === 0) {
if (b % 2 === 0) {
return a - b
} else {
return -1
}
} else {
if (b % 2 !== 0) {
return b - a ;
} else {
return 1
}
}
} ) );
Результат: [0, 2, 4, 10, 15, 7, 5, 3, 1]
Для последней сортировки, не зная точно алгоритма сортировки, врядли у вас получится по одному вызову определить направление ;)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Собственно говоря, вопрос в заголовкеЧто я хочу сделать, но не знаю как: при срабатывании event stop получить элемент, над которым отпустили блок,...
Всем привет! Обычным способом можно разбить "ul" на columns, прописав в стилях списка "columns: 3"Он сделает 3 колонки, по 2 "li" в каждой
Как переопределить в module scss глобальный класс officeUI fabric?
нам в универе сказали, что мы обязаны постоянно удалять массивы, если они динамические, но я так и не понял зачем и почемуВот, например, код...