@nihil110

Почему не получается сортировка по array в консоли JS?

let values = [1,2,3,4]
function myFunction(arr, str) {
if (str === "asc") {
return arr.sort(((a,b)=> a-b))
}
else if(str === "dsc") {
return arr.sort(((a,b)=> b-a))
}
return arr
}
console.log(myFunction(values));

Почему не выдает результат для обоих условий?
Результатом должно быть 1234 и 4321
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Метод sort() изменяет сам массив.
Когда вызываете функцию myFunction() без второго аргумента, возвращается массив как есть. Как отсортировали его предыдущим вызовом.

Лучше делать копию массива, и сортировать-возвращать уже её:
function myFunction(arr, str) {
  const sortedArray = arr.slice(); // копия, чтобы не менять оригинал

  if (str === 'asc') {
    sortedArray.sort((a, b) => a - b);
  } else if (str === 'dsc') {
    sortedArray.sort((a, b) => b - a);
  }

  return sortedArray;
}

console.log(myFunction([1, 4, 3, 2], 'asc')); // [ 1, 2, 3, 4 ]
console.log(myFunction([1, 4, 3, 2], 'dsc')); // [ 4, 3, 2, 1 ]
console.log(myFunction([1, 4, 3, 2])); // [ 1, 4, 3, 2 ] без изменений
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@tuwkan
Функциия ожидает два аргумента, а передаётся один
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы