@boluchevskii

Как написать функцию через splice, принимающую массив и перебрасывающую первый элемент в конец?

Нашёл способы сделать это через shift&pop, splice и slice. Но не могу понять зачем в методе splice нужны квадратные скобки после круглых "let spl = arr.splice(0,1)[0]". Подскажите, пожалуйста, почему без них не работает и показывает, что переменная spl равна Array(1), ведь arr.splice и подразумевает, что я хочу удалить один элемент, начиная с нулевого.

function changeSp(arr) {
  let spl = arr.splice(0,1)[0];
  arr.push(spl);
  return arr;
}

console.log(changeSp([1,2,3,4,5])); // 2,3,4,5,1
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
@semen_ch
фронтенд разработчик
Метод splice() изменяет содержимое массива и возвращает массив, содержащий удалённые элементы. Если будет удалён только один элемент, вернётся массив из одного элемента!
Потом вы обращаетесь с помощю [0] к этому удалённому элементу (по индексу 0). Получается что переменная spl в итоге содержит в себе первый элемент из массива удалённых элементов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@slide13
frontend/web-developer
splice возвращает массив из удаленных элементов, соответственно, при arr.splice(0,1) будет возвращен массив [1] и чтобы получить элемент массива, нужно обратиться к нему по индексу, а так как мы удалили один элемент и вернулся он в массиве один, то обращаемся к нулевому. Т.е. в spl у нас теперь будет 1.

ну и по условию, если предполагается использовать только splice, то функцию можно написать как-то так:
function changeSp(arr) {
  arr.splice(arr.length, 0, ...arr.splice(0,1));
  return arr;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы