문자열을 순회하면서 indices
에 포함된 문자를 제외하며 새로운 문자열을 만들어요.
이론
배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환해요.
arr.reduce(callback[, initialValue]);
callback
함수는 네 개의 인자를 가져요.
accumulator
(acc, prev) : 콜백의 반환값을 누적
currentValue
(cur, curr) : 처리할 현재 요소
currentIndex
(idx, index) : 처리할 현재 요소의 인덱스 (optional)
array
(src) : reduce()
를 호출한 배열 (optional)
initialValue
를 제공한 경우, acc
는 initialValue
와 같고, cur
는 배열의 첫 번째 요소와 같아요.
initialValue
를 제공하지 않은 경우, acc
는 배열의 첫 번째 요소와 같고, cur
는 두 번째 요소와 같아요.
const arr = [1, 2, 3, 4, 5];
const sum = arr.reduce((prev, curr) => prev + curr, 0);
console.log(sum); // 15
map vs reduce
map()
은 반환값이 같은 길이의 배열이고, reduce()
는 반환값이 무엇이든 상관없어요.
주어진 조건에 따라 map()
과 reduce()
또는 다른 메서드를 사용해야 해요.
includes()
메서드는 배열의 항목에 특정 값이 포함되어 있는지를 판단하여 적절히 true
또는 false
를 반환해요.
includes(searchElement[, fromIndex])
searchElement
: 배열에서 찾을 값
fromIndex
: 검색을 시작할 인덱스. 음수를 지정하면 배열의 끝에서부터 검색을 시작해요. 기본값은 0
이에요.
const array1 = [1, 2, 3];
console.log(array1.includes(2));
// Expected output: true
const pets = ['cat', 'dog', 'bat'];
console.log(pets.includes('cat'));
// Expected output: true
console.log(pets.includes('at'));
// Expected output: false
코드
function solution(my_string, indices) {
return [...my_string].reduce(
(acc, cur, idx) => (indices.includes(idx) ? acc : acc + cur),
''
);
}