20. Начинаем сортировку


#1

Здравствуйте. Я совсем не понял логику приравнивания элементов. Кто поможет построчно объяснить логику и суть сего действия.

for (var j = currentIndex + 1; j <= usersByDay.length - 1; j++) {
if (usersByDay[j] < minValue) {
minValue = usersByDay[j];_
var swap = usersByDay[currentIndex];
usersByDay[currentIndex] = minValue;
usersByDay[j] = swap;


#2

Меня тоже интересует этот вопрос


#3

var usersByDay = [4, 2, 1, 3];
console.log(usersByDay);

var currentIndex = 0;
var minValue = usersByDay[currentIndex];

Для наглядности добавлю остальные куски кода. Сам я тоже новичек в JS, но попробую объяснить.

  1. В переменную var minValue = usersByDay[currentIndex];
    мы записываем значение элемента массива равное числу 4.

  2. В цикле отсчёт начинаем не с 0-го элемента массива, а с 1-го элемента массива: var j = currentIndex + 1.
    Начинаем цикл с 1-го элемента, а не с 0-го, потому что далее в цикле в условии мы будем сравнивать 1-ый элемент массива с 0-ым: if (usersByDay[j] < minValue), т.е. 2 < 4. Ведь, в переменную minValue у нас записано значение 0-го элемента массива равное 4, а в usersByDay[j] вместо j подставляется число 1, а значение 1-го элмемнта массива это число 2.

  3. Итак, мы сравнили 1-ый и 0-ой элементы массива: 2 < 4. Т.к условие верное, то теперь в переменную minValue мы записываем значение usersByDay[j], т.е. 2.

  4. Затем, в переменную swap мы сохраняем число 4, т.е. 0-ой элемент массива, чтобы его не потерять, т.к. число 4 нам пригодится, чтобы подставить его вместо 1-го элемента массива, в то время как, в будущем 1-ый элемент массива встанет на место 0-го элемента массива.

  5. Далее идёт вот этот шаг: usersByDay[currentIndex] = minValue;
    Здесь 0-ому элементу массива присваивается минимальное значение, что мы получили в результате сравнения выше в коде. Т.е 2.

  6. А здесь - usersByDay[j] = swap; Мы текущему элементу массива, т.е. 1-ому элементу, присваиваем ранее сохранённое значение 4.

Таким образом, мы меняем местами 0 и 1 элементы массива. Вроде как-то так))