Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

특정 요소의 위치를 ​​변경하지 않고 배열 반전 JavaScript

<시간/>

리터럴 배열을 받는 JavaScript 함수를 작성해야 합니다. 함수는 아래 예와 같이 배열에 있는 '#'의 인덱스를 변경하지 않고 배열을 반전시켜야 합니다. -

배열 [18,-4,'#',0,8,'#',5]는 −

를 반환해야 합니다.
[5, 8, "#", 0, -4, "#", 18]

여기에서 '#'을 제외한 숫자를 반대로 하여 인덱스를 동일하게 유지합니다.

예시

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));

출력

콘솔의 출력은 -

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