Computer >> Máy Tính >  >> Lập trình >> Javascript

Đảo ngược mảng mà không thay đổi vị trí của các phần tử nhất định JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng một mảng các ký tự. Hàm sẽ đảo ngược mảng mà không thay đổi chỉ số của '#' trình bày trong một mảng, như ví dụ dưới đây -

Mảng [18, -4, '#', 0,8, '#', 5] sẽ trả về -

[5, 8, "#", 0, -4, "#", 18]

Ở đây, các số phải được đảo ngược, loại trừ '#' trong khi giữ nguyên chỉ mục.

Ví dụ

const arr = [18, -4, '#', 0, 8, '#', 5];
const arr1 = [18, -4, 0, '#', 8, '#', 5];
const specialReverse = (arr = []) => {
   let removed = arr.reduce((acc, val, ind) => {
      return val === '#' ? acc.concat(ind) : acc;
   }, []);
   let reversed = arr.filter(val => val !== '#').reverse();
   removed.forEach(el => reversed.splice(el, 0, '#'));
   return reversed;
};
console.log(specialReverse(arr));
console.log(specialReverse(arr1));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
5, 8, '#', 0,
-4, '#', 18
]
[
5, 8, 0, '#',
-4, '#', 18
]