Эмуляция метода .reverse()
Проверьте меня пожалуйста. Правильно ли я сделал?
Задача: Напишите функцию, которая эмулирует работу метода reverse. Т.е. создает новый массив на основе arr13 с обратным порядком элементов и выводит в out-13.
let arr13 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
let btn13 = document.querySelector('button.b-13');
let div13 = document.querySelector('div.out-13');
btn13.onclick = function f13() {
let tsk13 = [];
for (let i = 0; i < arr13.length; i++) {
tsk13.push(arr13[i]);
}
for (let i = tsk13.length - 1; i >= 0; i--) {
div13.innerHTML += tsk13[i] + ' ';
}
div13.innerHTML += '<br>' + ' ';
tsk13 = arr13;
}
<button class="b-13">BUTTON_TASK-13</button>
<div class="out-13"></div>
А так будет верно?
let arr13 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
let btn13 = document.querySelector('button.b-13');
let div13 = document.querySelector('div.out-13');
btn13.onclick = function f13() {
let tsk13 = [];
for (let i = arr13.length - 1; i >= 0; i--) {
tsk13.push(arr13[i]);
}
for (let i = 0; i < tsk13.length; i++) {
div13.innerHTML += tsk13[i] + ' ';
}
console.log(tsk13);
div13.innerHTML += '<br>' + ' ';
tsk13 = arr13;
}
<button class="b-13">BUTTON_TASK-13</button>
<div class="out-13"></div>
Ответы (1 шт):
Автор решения: Leonid
→ Ссылка
Можно попробовать через деструктивное присваивание менять местами пары:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
Array.prototype.myReverse = function(){
for(let i=0; i<=this.length/2|0; i++){
[this[i], this[this.length - 1 - i]] = [this[this.length - 1 - i], this[i]];
}
}
arr.myReverse();
console.log(arr);
Или применить безусловную обратную сортировку:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
Array.prototype.myReverse = function(){
this.sort(() => -1);
}
arr.myReverse();
console.log(arr);