Дан массив: ['shoes', 'shirts', 'socks', 'sweaters']

Напишите функцию которая записывает последний элемент этого массива в переменную elem1, а предпоследний - в переменную elem2, не обращаясь к свойству length для решения.

Правильно ли записано решение?

let arr = ['shoes', 'shirts', 'socks', 'sweaters'];

let elem1 = arr.pop();
let elem2 = arr.shift();
console.log(elem1);
console.log(elem2);
console.log(arr);


Ответы (1 шт):

Автор решения: Александр Лесив

let arr = ['shoes', 'shirts', 'socks', 'sweaters'];

var elem1, elem2;

ex2(arr);

// ex1(arr);

console.log(elem1);
console.log(elem2);
console.log(arr);

// Правильная реализация вашего подхода
// Нужно дважды использовать pop, чтоб получить последний и предпоследний
function ex1(arr) {
  elem1 = arr.pop();
  elem2 = arr.pop();
}

// Я бы сделал так, чтоб не мутировать исходный массив
function ex2(arr) {
  // Получаем 2 последние элементы массива и с помощью деструктуризации
  // присваиваем их значения в переменные
  [elem2, elem1] = arr.slice(-2);
}

→ Ссылка