문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
1 ≤ strArr의 길이 ≤ 1,000
1 ≤ strArr의 원소의 길이 ≤ 20
strArr의 원소는 알파벳 소문자로 이루어진 문자열입니다.
strArr | result |
---|---|
["and","notad","abcd"] | ["and","abcd"] |
["there","are","no","a","ds"] | ["there","are","no","a","ds"] |
입출력 예 설명
입출력 예 #1
1번 인덱스의 문자열인 "notad"는 부분 문자열로 "ad"를 가집니다. 따라서 해당 문자열을 제거하고 나머지는 순서를 유지하여 ["and","abcd"]를 return 합니다.입출력 예 #2
"ad"가 부분 문자열로 들어간 문자열이 존재하지 않습니다. 따라서 원래 배열을 그대로 return 합니다.
function solution(strArr) {
return strArr.filter(el => !el.includes('ad'))
}
해당 문제를 봤을 때 includes
메소드가 떠올랐다!
includes는 해당 문자열이 포함될 경우 true
, 아닌 경우 false
를 반환한다.
해당 문제에서는 포함된 문자열을 제외
한 나머지를 반환하는 것으로 false인 값을 반환하면 된다.
초반에는 map메소드를 사용했지만 그것보다 filter
메소드를 사용하는게 적합하다고 생각했다.
filter메소드는 조건이 맞는 요소만 반환한다.
예전에는 변수를 선언 후 할당하고 반환했지만
이번에 간단하게 한줄로 코드를 작성했다!
function solution(strArr) {
strArr = strArr.filter((x)=>{
return x.indexOf("ad") == -1
})
return strArr;
}
다른 분들도 includes메소드를 사용해 푸셨다.
이분은 indexOf로 작성하셨는데 이 방법도 있다 싶어 가져와 봤다.
indexOf는 해당 문자열이 있을 경우 index
를 반환하고 아닌 경우 -1
를 반환한다.
indexOf
- 배열에서 주어진 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고, 찾을 수 없는 경우
-1
을 반환합니다.
-출처 mdn