Нужно удалить последний элемент массива без применения метода .pop()
Не могу справиться с задачей: Необходимо написать функцию, которая эмулирует метод pop. То есть, нужно получать результат аналогичный pop, но без применения pop. Функция может быть вызвана много раз, при этом каждый раз должен удаляться последний элемент (я так понимаю arr7[arr7.length - 1]). delete приводит к удалению только самого значения, но длина массива не меняется.
let arr7 = ['alex', 'nika', 'natali', 'jane', 'anne'];
function f7() {
console.log(arr7);
}
f7();
Ответы (3 шт):
Автор решения: Grundy
→ Ссылка
свойство .length - особое. При его изменении меняется и сам массив.
Так, если присвоить значение, меньше текущего - лишние элементы удаляться.
Таким образом для эмуляции .pop нужно
- получить последний элемент
- уменьшить длину массива
- вернуть полученный элемент
let arr7 = ['alex', 'nika', 'natali', 'jane', 'anne'];
console.log(arr7);
function pop(arr) {
if (!arr.length) return undefined;
const el = arr[arr.length - 1];
arr.length = arr.length - 1;
return el;
}
console.log(pop(arr7));
console.log(arr7);
Автор решения: vsemozhebuty
→ Ссылка
Можно ещё воспользоваться функцией splice():
let arr7 = ['alex', 'nika', 'natali', 'jane', 'anne'];
function pop(arr) {
const [deleted] = arr.splice(-1);
return deleted;
}
console.log(pop(arr7));
console.log(arr7);
Автор решения: Bogdana
→ Ссылка
let d7 = ['china', 'india', 'brazil', 'japan', 'egypt'];
function f7() {
d7.length = d7.length - 1;
console.log(d7);
showArr('.out-7', d7);
}
document.querySelector('.b-7').onclick = f7;