javascript Array reverse повернуть много строк

Задание Javascript Array reverse.
Напиши функцию arrayReverse, которая принимает массив строк words, которая содержит цифры, номера латинские символы.

Переверни строки в массиве и их порядок так, чтоб длина строк с оригинального массива не изменялась. То есть, если длина первой строки ровна 1, а последней - 5, то при повороте первой строкой в массиве будет только последний символ с последней строки.

Например: 'I', 'am', 'a', 'student!' === !tnedutsamaI.
А потом конечный результат должен быть: '!', 'tn', 'e', 'dutsamaI'

Мой код:

 const arrayReverse = (words) => {
    return words.map(word => {
      const reversed = word.split('').reverse().join('');
    return reversed;
  }).reverse();
}

const result = arrayReverse(['I', 'am', 'a', 'student!']);
console.log(result);  // [ '!tneduts', 'a', 'ma', 'I' ]


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

Автор решения: Qwertiy

Даже с енотом работает :)

function solve(a) {
  return [...a.join("")]
    .reverse()
    .join("")
    .match(RegExp(a.map(x => '(' + x.replace(/./gus, '.') + ')').join(''), 'us'))
    .slice(1)
}

console.log(solve(['I', 'am', 'a', '?', 'student!']))

→ Ссылка
Автор решения: Grundy

const arrayReverse = (words) => {
  const full = words.join('').split('').reverse();
  return words.map(word => {
    return full.splice(0, word.length).join('');
  });
}

const result = arrayReverse(['I', 'am', 'a', 'student!']);
console.log(result); // [ '!tneduts', 'a', 'ma', 'I' ]

→ Ссылка