дополнительный массив.
Оригинальный массив должен перевернуться.
Я сделала так. Но проблема в том что оригинальный массив копируется. И так же выводится, а за ним уже перевёрнутый. Я понимаю что происходит это из-за метода push. A.push(A[i]);
Как это можно заменить? Или такой код не подойдёт в данной задаче?
let A = [1, 5, 6, 2, 4];
console.log(A);
for (i = A.length - 1; i >= 0; i--) {
A.push(A[i]);
}
console.log(A);
создай пустой, закинь в него и замени им?
да, так получается. Но условие таково что нельзя использовать дополнительный массив. Оригинальный должен поменяться
splice обрезать по длине изначального?
вам надо идти по индексам до середины и свопать элементы
let A = [1, 5, 6, 2, 4]; console.log(A); for (i = A.length - 1, j = 0; i > Math.ceil(A.length / 2); i--, j++) { [A[j], A[i]] = [A[i], A[j]]; } console.log(A); скорей всего так
Круто! Спасибо!
Я ещё написала вот так. Но понимаю что это искусственно перевёрнуто, и задание то не в этом))) В общем как вариант) Метод splice также изменяет исходный массив. let A = [1, 5, 6, 2, 4]; console.log(A); for (i = A.length - 1; i >= 0; i--) { A.splice(0, 5, 4, 2, 6, 5, 1); } console.log(A);
За splice я имел ввиду можно так let A = [1, 5, 6, 2, 4]; let aLength = A.length; console.log(A); for (i = A.length - 1; i >= 0; i--) { A.push(A[i]); } A.splice(0, aLength); console.log(A);
Это валидный синтакс ? Так можно деструктить ?
Интересное решение) Спасибо!) А зачем мы присваиваем ещё одну переменную let aLength - т.е это те элементы которые будут удалены из исходного массива?
запомнить длину, можно просто текущую на 2 поделить если переменные не делать
Поняла, спасибо!
Как вариант частного случая: let x = [1, 5, 6, 2, 4], [a, b, c, d, e] = x; x = [e, d, c, b, a];
И немножко "экзотики" до кучи: 🙂🙃🙂 function customReverse(arr) { let count = 0; arr = arr.concat(arr); for(i = arr.length - 1; i >= (arr.length / 2); i--) { arr.copyWithin(count, i, i + 1); count++; } arr.length /= 2; return arr; }
Спасибо большое! Изучу метод copyWithin😃
Обсуждают сегодня