Есть массив. Решить, двумя способами. В первом исходный массив должен быть изменен, во втором - не должен быть изменен

Нужно из массива ['Саша', 'Петя', 'Оксана'] сделать массив ['Оксанa', 'Олег', 'Саша'].

Есть первое решение, не могу понять как решить вторым способом! Помогите пожалуйста!

let arr = ['Саша', 'Петя', 'Оксана'];

const firstWay = arr.map((item, index, ar) => {
    if(item === 'Петя')  item = 'Олег';
    return item;
}).reverse();

console.log(firstWay);

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

Автор решения: Михаил Камахин

Реализовал вам два решения:

  • функцию mutableRevert - переворачивает и мутирует массив
  • функцию noMutableRevert - переворачивает и не мутирует массив

Без использования встроенных функций JS

const arr = ['Саша', 'Петя', 'Оксана', 'Вася', 'Миша'];

function mutableRevert(mutableArr) {
  const condition = (length, i) => length % 2 === 0 ? i < length / 2 : i < arr.length / 2 - 1;
  
  for (let i = 0; condition(mutableArr.length, i); i++) {
    const mirrorIndex = mutableArr.length - 1 - i;
    [mutableArr[i], mutableArr[mirrorIndex]] = [mutableArr[mirrorIndex], mutableArr[i]];
  }
  
  return arr;
}

function noMutableRevert(mutableArr) {
  const newArr = [];
  
  for (let i = 0; i < mutableArr.length; i++) {
    newArr[i] = mutableArr[mutableArr.length - 1 - i];
  }
  
  return newArr;
}


console.log(noMutableRevert(arr));
console.log(arr);

→ Ссылка