Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Đảo ngược mảng mà không thay đổi vị trí phần tử đặc biệt trong JavaScript


Chúng ta cần viết một hàm JavaScript nhận vào một mảng các giá trị. Hàm nên đảo ngược mảng mà không thay đổi chỉ số của ký tự '#' có trong mảng.

Mảng [18, -4, '#', 0, 8, '#', 5] nên trả về:

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

Ở đây, các số được đảo ngược, loại trừ '#' nhưng vẫn giữ nguyên chỉ số.

Ví dụ

const arr = [18, -4, '#', 0, 8, '#', 5]; 
const arr1 = [18, -4, 0, '#', 8, '#', 5]; 
const specialReverse = (arr = []) => { 
  const 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));

Kết quả

Kết quả hiển thị trong console sẽ là:

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