Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 배열로 지정한 인덱스의 문자를 별표(*)로 바꾸는 방법

이번 글에서는 첫 번째 인수로 문자열을, 두 번째 인수로 숫자 배열을 받아서, 배열 요소가 가리키는 인덱스 위치의 모든 문자를 별표(*)로 대체하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.

구현 아이디어

핵심 로직은 크게 세 단계로 나눌 수 있습니다.

  • split('') 메서드로 문자열을 개별 문자의 배열로 변환합니다.
  • reduce() 메서드를 사용해 두 번째 인수로 전달받은 인덱스 배열을 순회하며, 해당 위치의 문자를 '*'로 교체합니다.
  • join('') 메서드로 다시 하나의 문자열로 합쳐 반환합니다.

예제 코드

실제 동작하는 코드는 다음과 같습니다.

const str = "Lorem ipsum dolor sit amet consectetur adipiscing elit";
const arr = [4, 7, 9, 12, 15];

const replaceWithAsterisk = (str, indices) => {
  let res = '';
  res = indices.reduce((acc, val) => {
    acc[val] = '*';
    return acc;
  }, str.split('')).join('');
  return res;
};

console.log(replaceWithAsterisk(str, arr));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

Lore* i*s*m *ol*r sit amet consectetur adipiscing elit

코드 설명

str.split('')은 문자열을 한 글자씩 쪼개어 배열로 만듭니다. 이렇게 만들어진 배열을 reduce()의 초기값으로 사용하면, 인덱스 배열 [4, 7, 9, 12, 15]를 순회하면서 각 인덱스에 해당하는 문자를 '*'로 덮어쓰게 됩니다. 마지막으로 join('')을 호출해 수정된 문자 배열을 다시 하나의 문자열로 결합하면 원하는 결과를 얻을 수 있습니다.

이 방식은 원본 문자열을 직접 수정하지 않고 새로운 문자열을 생성하기 때문에, 불변성(immutability)을 유지하는 함수형 프로그래밍 스타일에도 잘 어울립니다.