리스트를 다루는 법에 익숙해 지기 위해 오늘도 프로그래머스에서 문제를 풀었어요.
오늘은 꼬리문자열1을 풀었습니다.
여러 문자열을 담은 리스트가 있고 문자열 변수를 받아 그 변수를 포함하지 않은 문자열을 반환하는 거였어요.
어느 착한 지식인이 답을 만들어 블로깅해주셨더라구요
var answer = str_list.filter((e)=> !e.includes(ex)).join("")
답은 저거였습니다.
일단 저의 풀이과정으로 돌아갈께요.
저는 일단 그 배열 안에 문자열이 변수를 갖고 있는지 확인하는 코드를 먼저 한 다음.
문자열에서 포함이 된게 확인이 되면 !를 붙여서 포함하지 않는 걸로 바꿔서 새로운 변수에 넣은 뒤, join으로 1개의 문자열로 합칠 계획이었어요.
그래서 includes를 사용해 봅니다.
var answer = "";
var answer = str_list.map((char)=> (char.includes(ex)==-1) ? answer.push(char) : "")
var answer = str_list.map((char)=> (char.includes(ex)!=-1) ? answer.push(char) : "")
var answer = str_list.map((char)=> (char.includes(ex)== 1) ? answer.push(char) : "")
그런데 말이죠? 자꾸 push에서 push가 undefinde라고 뜨는 거에요. 뭐가 문제일까 하다가 includes가 문제인가 하며 find르 를 해밨어요. 당연히 안돼죠.. 지금에서 생각하는 거지만 왜 push가 에러가 난건데 다른곳에서 문제인거라고 생각한걸까..이해할 수 없었어요.
그래서 막 오리무중하다가
for문을 사용해 봤어요.
이번에는
reg를 사용할 계획을 세워 봅니다.
let reg = /ex/g
var answer '';
for(let i =0; i<=str_list.length;i++){
console.log(str_list[i].match(reg))
}
를 해요.
그런데 간과한게 reg를 하면 //g 안에 있는게 변수로 인식되는게 아니라 그냥 글자로 인식되더라구요.
당연히 망했죠.
그래서 왜 안될까.. 분명 includes는 문자열이나 배열에서 includes()에서 ()안에 들어있는 걸 포함하는지 안하는지 알려준다 했는데... 그래서 includes가 ()안에 있는걸 변수가 아니라 그냥 글자로 찾아서 인식하나보다 라고 생각하게 됐어요. 착각이었죠.
그러다가 정말 아씨 모르겠다 해서 답을 봤고 아씨 뭐야 내 includes는 안되던데! 하고 includes가 괄호 안에 변수도 받는구나 란걸 깨닫고, 내가 식을 잘 못 썻구나를 깨닫게 됩니다.
그리고 map을 써서 하려했을 때 왜 push에서 오류가 나는지 모르겠어서 chatgpt에서 물어보니 위에 변수가 객체로 선언됐는데 이미 선언한 변수를 또 써서 코드를 작성했는데 push로 하면 들어먹질 안게 되는거였죠.
위에 선언한 변수와 실제 코드를 작성한 코드를 분리를 하니 잘 작동했었어요...
그리고 includes에서는 -1이 나올 수 없는 구조였기 때문에 빈 배열만 나왔던 것이었고, ture, false로 하니... 배열에
[1,"",2] 가 담기더라구요,... 작동을 하는 식이었고 내가 조건을 잘못넣었다는 걸 알수 있었습니다.
암튼 map으로 할때는
var answer = [];
let test= str_list.map((char)=> (!char.includes(ex) ? answer.push(char) : "")
let result= answer.join("")
return result
이렇게 작성해서 풀 수 있었습니다..녜.. 오늘도 뚠뚠 삽질을 뚠뚠 열심히 했네...
1. includes는 ()안에 변수를 사용할 수 있다.
2. 포함하지 않는다는 !char.includes(ex)를 사용하면 char, 즉 value를 받을 수 있다.
3. filter나 includes, match, 정규식의 사용법은 숙지하자. 안되면 매일 읽기라도 도전하자.
'자기개발 > TIL' 카테고리의 다른 글
숫자인데 string이면? (0) | 2023.07.12 |
---|---|
특정 문자열로 시작하는지 확인 (0) | 2023.07.11 |
js에서 양의 정수를 받아 배열로 만들기 (0) | 2023.07.07 |
js 조건문을 연습하는 줄 알았는데 새로운 매소드를 알았다. (0) | 2023.07.06 |
리스트 연습 (0) | 2023.07.05 |