Объяснение работы кода!
Условие: Вам будет дан массив чисел. Вам нужно отсортировать нечетные числа в порядке возрастания, оставив четные числа на своих исходных позициях.
function sortArray(array) {
const odd = array.filter((x) => x % 2).sort((a,b) => a - b);
return array.map((x) => x % 2 ? odd.shift() : x);
}
console.log( sortArray([5, 3, 2, 8, 1, 4]) );
Объясните как работает этот код, что он делает я знаю, но в частности меня интересует часть строки odd.shift() мы убираем 1 элемент. из массива odd, но как это меняет наш array. Как и что перемещает элементы в массиве, так как нужно?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Всё просто. Метод shift() удаляет первый элемент из массива и возвращает его значение. Поэтому тут происходит следующее:
- Сначала мы отбираем через
filterтолько нечётные числа, сортируем их черезsortи помещаем в массивodd - Потом ещё раз проходимся по исходному массиву
arrayс помощьюmap, при этом:- Когда встречаем чётное число
x, возвращаем его как есть - Когда встречаем нечётное
x, то возвращаем вместо него очередное число из массиваoddчерезodd.shift()(то есть уже в отсортированном порядке)
- Когда встречаем чётное число
Исходный массив array это никак не меняет, это формирует новый массив, который возвращается из функции через return после обработки массива array функцией map.