Answer
t.me/js_testОтвет:
function sortOdd(array) {
const isOdd = (n) => n % 2 !== 0;
const odd = array.filter(isOdd).sort((a, b) => a - b);
return array.map((n) => (isOdd(n) ? odd.shift() : n));
}
Объяснение:
Создаём дополнительную функцию isOdd для проверки числа на нечетность. Затем создаём массив odd и с помощью метода filter вытаскиваем все нечетные элементы из переданного в функцию массива array а также сразу сортируем их с помощью метода sort. Далее с помощью метода map идем по массиву array и проверяем: если число нечетное то ставим на его место первый элемент из массива odd, одновременно обрезая этот самый массив odd, а если элемент четный то ничего не меняем.
Код для проверки:
function sortOdd(array) {
const isOdd = (n) => n % 2 !== 0;
const odd = array.filter(isOdd).sort((a, b) => a - b);
return array.map((n) => (isOdd(n) ? odd.shift() : n));
}
console.log(sortOdd([5, 3, 2, 8, 1, 4]));
console.log(sortOdd([5, 3, 1, 8, 0]));
console.log(sortOdd([]));