a[prop] < b[prop] сломал голову с этим. Не понимал, почем у меня не работает a.prop < b.prop. Еще думал, почему пишете именно так, ведь куда проще записать моим вариантом)) ну зато запомнил! Надеюсь..)
Не понял что такое arr, prop, dir. Что к чему относится? Как он поймет что именно сортировать? Мне надо на ФИО, ВОЗРАСТ, ФАКУЛЬТЕТ, ГОД. Это надо к каждому виду писать свою функцию?
Здравствуйте. Параметр prop отвечает за настройку, по какому именно полю (свойству) мы делаем сортировку ФИО, ВОЗРАСТ, ФАКУЛЬТЕТ, ГОД, а dir за направление сортировки: во возрастанию или по убыванию :)
Спасибо большое за сортировку. Особенно переменная, которая меняет направление. if (dirif == true) return -1; Я только не совсем понимаю эту строчку. Мы задаем направление сортировки, когда переменная равна true?
Прошу прошение за долгий ответ, не всегда получается делать это своевременно. Здесь важно понимать, для чего функция сортировки возвращает отрицательное число. Очень рекомендую ознакомиться с документации этой функции developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Спасибо за комментарий. В этом видео я попытался показать способ сортировки встроенной функцией sort в JS именно объектов по их свойствам. Думаю, что это повод записать видео с разбором того, как вообще работает сортировка и что там под капотом :)
Добрый день. А можно узнать что такое return -1. Что это значит? Что на что перемножается или что из чего вычитается? Как и почему меняются числа местами. Каким способом они меняются? Как именно это происходит. Что называется посмотреть все что происходит под капотом.
Здравствуйте, увидел ваш комментарий. -1 - это отрицательное число, которое показывает будут ли меняться местами пара чисел. Тут нужно обратиться к принципу сортировки в целом. Если коротко, сортировка, это сравнивание чисел и изменение их позиций. Самый простой случай сортировки - это случай с двумя числами. A и B. Если А > B, то мы меняем их местами. В этом случае мы получаем сортировку по возрастанию. И функция, которую мы прописываем в sort должна вернуть положительное число +1. Если A > B, и мы вернем -1 в функции, то мы их менять местами не будем и числа будут отсортированы по убыванию. Я думаю, что по самому методу сортировки стоит записать отдельное видео.
@@alex_dudukalo а с compareFn он как именно сравнивает элементы? например [2 , 4 , 1, 0 ].sort((a,b) => a-b) он берет 4(а) -2(b) возвращает +1 и эти элементы остаются на своих местах, далее сравнивает 1(а) - 4(b) возвращает -1 и элементы меняются местами? т.е на данном этапе массив выглядит так [ 2 , 1 , 4 , 0 ] ?? далее 0 -4 return - 1 и наш массив теперь [ 2 , 1 , 0 , 4] и этот метод делает новую итерацию ??? опять с самого начала до конца и так до тех пор пока везде return +1 не вернется?
Александр, здравствуйте! В mdn сказано, что функция для sort должна иметь вид function compare(a, b) { if (a меньше b по некоторому критерию сортировки) { return -1; } if (a больше b по некоторому критерию сортировки) { return 1; } // a должно быть равным b return 0; } но работает и вариант просто с return -1... Как это понимать? Спасибо за ответ.
Здравствуйте, хороший вопрос. Я бы тут сделал такое описание7 На мой взял оно более понятное: function compare(a, b) { if (a > b) return 1; // если первое значение больше второго if (a == b) return 0; // если равны if (a < b) return -1; // если первое значение меньше второго } Возможно в вашем примере нужно е условие не выполняется :)
почему return -1 срабатывает сортировка , а return 1 не сортируется массив. Подскажите , -1 - это значит меняем местами два эелемнта, а если 1 оставляем как есть ? или нет
У функции sort такое правило: - Если функция вернет число меньше 0, то сортировка поставит число 'a' по меньшему индексу, чем b, то есть, a идёт первым. - Если функция вернет 0, то сортировка оставит a и b неизменными по отношению друг к другу, но отсортирует их по отношению ко всем другим элементам - Если функция вернет число больше 0, то сортировка поставит число поставит 'b' по меньшему индексу, чем 'a' Примерно так :)
@@alex_dudukalo , спасибо за объяснение! Осталось понять - почему в переменную а помещается второй элемент массива, а в переменную b - первый (из пары сравниваемых). Это хорошо видно на видео, на 1:40. По-моему, это не логично как-то и мешает сформулировать условие сортировки...
Обычно делается цикл, который проходит по каждому объекту и если число в объекте больше, чем число в созданном ранее объекте max , то в max помещаем текущий объект и так повторяем, пока не пройдём по всем объектам :)
Вторая половина ролика - страдание херней. Цель: передавать направление похвальна, реализация: дно. Скоращение кода не всегда хорошо, особенно если на кону стоит читаемость кода. Короче, смотрите дети, как дядя делает и не повторяйте за ним. Хз че там в ваших модулях, может не положено ещё, но лучше бы показал на этом примере, как сортировать по двум параметрам с применением рекурсии
Александр, спасибо Вам за Ваши видео! Без них я бы давно забросила учебу))
Полезное видео. Спасибо тебе Александр
Спасибо за разжевание работы данного метода массива, пойду пробовать сортировать))
Спасибо вам за комментарий. Тема сортировки супер важна ) В практике мы часто делаем сортировку данных :)
спасибо большое за объяснение! Классная идея показывать как сокращается код)
Спасибо вам :) Да, планирую записать такое видео )
Спасибо за видео, отлично объясняешь!
Спасибо за комментарий. Не всегда получается хорошо, но я стараюсь :)) Надеюсь видео помогло разобраться в теме )
Спасибо большое за исправления в моих знаниях по сортировке)
Спасибо вам за просмотр и отклик. Я рад, что виде помогло разобраться :)
Спасибо за потраченное для нас время)
Спасибо за этот комментарий :) плюс к продвижению видео )
Спасибо за подробное разъяснение
Спасибо за ваш комментарий😊
Просто мастер сокращения 👍)
)))) Спасибо вам , коротко, но уже не так понятно
@@alex_dudukalo мне, как только изучающему азы JS сложно его читать) но объяснения очень классные 👍
Тупо красота! Огромное спасибо!
Спасибо вам за коммертарий :)) Рад, что ролик был полезным)
Спасибо за помощь !
Спасибо за хорошее об'яснение
a[prop] < b[prop] сломал голову с этим. Не понимал, почем у меня не работает a.prop < b.prop. Еще думал, почему пишете именно так, ведь куда проще записать моим вариантом)) ну зато запомнил! Надеюсь..)
Здравствуйте. Удалось разобраться в условиях функции сортировки? Возможно я что то пропустил в видео:)
Спасибо!
Спасибо за ваш комментарий :)
Огонь
Спасибо :)
👍👍👍👍👍👍👍👍
Спасибо за комментарий :)
А еще написать: "Внимание! Спойлер"))) до конца не стал смотреть, так как пока что хочу попробовать сделать сам, а потом уже посмотреть как правильно)
Рад вас здесь видеть. Да, потом обязательно сравните. Я думаю будет интересно посмотреть разницу решений :)
@@alex_dudukalo Александр, может перейдем на "ты"?)
@@user-mv1dg9fg5m я только за :) переходим на ты :)
Не понял что такое arr, prop, dir. Что к чему относится? Как он поймет что именно сортировать? Мне надо на ФИО, ВОЗРАСТ, ФАКУЛЬТЕТ, ГОД. Это надо к каждому виду писать свою функцию?
Здравствуйте. Параметр prop отвечает за настройку, по какому именно полю (свойству) мы делаем сортировку ФИО, ВОЗРАСТ, ФАКУЛЬТЕТ, ГОД, а dir за направление сортировки: во возрастанию или по убыванию :)
Спасибо
Спасибо за комментарий 🤗
Спасибо большое за сортировку. Особенно переменная, которая меняет направление. if (dirif == true) return -1; Я только не совсем понимаю эту строчку. Мы задаем направление сортировки, когда переменная равна true?
Прошу прошение за долгий ответ, не всегда получается делать это своевременно. Здесь важно понимать, для чего функция сортировки возвращает отрицательное число. Очень рекомендую ознакомиться с документации этой функции developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Классно получается но ничего не понятно. Вы делаете делаете, я могу вот так, потом вот так, потом вот так. А что почему и как ничего не ясно.
Спасибо за комментарий. В этом видео я попытался показать способ сортировки встроенной функцией sort в JS именно объектов по их свойствам. Думаю, что это повод записать видео с разбором того, как вообще работает сортировка и что там под капотом :)
Добрый день. А можно узнать что такое return -1. Что это значит? Что на что перемножается или что из чего вычитается? Как и почему меняются числа местами. Каким способом они меняются? Как именно это происходит. Что называется посмотреть все что происходит под капотом.
Здравствуйте, увидел ваш комментарий. -1 - это отрицательное число, которое показывает будут ли меняться местами пара чисел. Тут нужно обратиться к принципу сортировки в целом. Если коротко, сортировка, это сравнивание чисел и изменение их позиций. Самый простой случай сортировки - это случай с двумя числами. A и B. Если А > B, то мы меняем их местами. В этом случае мы получаем сортировку по возрастанию. И функция, которую мы прописываем в sort должна вернуть положительное число +1. Если A > B, и мы вернем -1 в функции, то мы их менять местами не будем и числа будут отсортированы по убыванию. Я думаю, что по самому методу сортировки стоит записать отдельное видео.
@@alex_dudukalo а с compareFn он как именно сравнивает элементы? например [2 , 4 , 1, 0 ].sort((a,b) => a-b) он берет 4(а) -2(b) возвращает +1 и эти элементы остаются на своих местах, далее сравнивает 1(а) - 4(b) возвращает -1 и элементы меняются местами? т.е на данном этапе массив выглядит так [ 2 , 1 , 4 , 0 ] ??
далее 0 -4 return - 1 и наш массив теперь [ 2 , 1 , 0 , 4] и этот метод делает новую итерацию ??? опять с самого начала до конца и так до тех пор пока везде return +1 не вернется?
Спасибо. А почему вы в конце function поменяли на const?
Здравствуйте, подскажите о какой именно минуте в видео вы говорите? :) Это лучше поможет мне понять вопрос
@@alex_dudukalo 15:40
Александр, скажите пожалуйста, что лучше - короткий работающий код, или легкочитаемый, но больший по объему?
Лучше простой для чтения. Особенно , если вы только начинаете программировать :)
Александр, здравствуйте! В mdn сказано, что функция для sort должна иметь вид
function compare(a, b) {
if (a меньше b по некоторому критерию сортировки) {
return -1;
}
if (a больше b по некоторому критерию сортировки) {
return 1;
}
// a должно быть равным b
return 0;
}
но работает и вариант просто с return -1... Как это понимать? Спасибо за ответ.
или более ясный наверное вопрос. Почему return -1 делает сортировку, а return 1 не делает?
Здравствуйте, хороший вопрос. Я бы тут сделал такое описание7 На мой взял оно более понятное:
function compare(a, b) {
if (a > b) return 1; // если первое значение больше второго
if (a == b) return 0; // если равны
if (a < b) return -1; // если первое значение меньше второго
}
Возможно в вашем примере нужно е условие не выполняется :)
почему return -1 срабатывает сортировка , а return 1 не сортируется массив. Подскажите , -1 - это значит меняем местами два эелемнта, а если 1 оставляем как есть ? или нет
У функции sort такое правило:
- Если функция вернет число меньше 0, то сортировка поставит число 'a' по меньшему индексу, чем b, то есть, a идёт первым.
- Если функция вернет 0, то сортировка оставит a и b неизменными по отношению друг к другу, но отсортирует их по отношению ко всем другим элементам
- Если функция вернет число больше 0, то сортировка поставит число поставит 'b' по меньшему индексу, чем 'a'
Примерно так :)
@@alex_dudukalo , спасибо за объяснение! Осталось понять - почему в переменную а помещается второй элемент массива, а в переменную b - первый (из пары сравниваемых). Это хорошо видно на видео, на 1:40. По-моему, это не логично как-то и мешает сформулировать условие сортировки...
Здравствуйте почему свойства объекта приходит кавычке ' '
Здравствуйте, не уверен, что понял вопрос. Не могли бы вы его более подробно раскрыть? )
sortUser(arr,'age ',true) age свойства объекта почему как строка идёт
@@azizjalilov1761 через точку тоже писать можно.
Можно вопрос: как найти самое большое число в объекте который в массиве
Обычно делается цикл, который проходит по каждому объекту и если число в объекте больше, чем число в созданном ранее объекте max , то в max помещаем текущий объект и так повторяем, пока не пройдём по всем объектам :)
@@alex_dudukalo Спасибо)
Надо объяснить, что это за модуль? Откуда он и зачем, а то человек не из SkillBox не поймет.
Согласен, нужно будет добавить комментарий. Видео записывал тогда, когда еще канал не планировался 🙂
Вторая половина ролика - страдание херней. Цель: передавать направление похвальна, реализация: дно.
Скоращение кода не всегда хорошо, особенно если на кону стоит читаемость кода. Короче, смотрите дети, как дядя делает и не повторяйте за ним. Хз че там в ваших модулях, может не положено ещё, но лучше бы показал на этом примере, как сортировать по двум параметрам с применением рекурсии
Комент