어떤 문자들이 담긴 배열이 들어왔을 때,
공통적으로 시작되는 단어들을 추출하기
const getPrefix = strs => { let firstStr = strs[0]; const newArr = []; for (let i = 1; i<strs.length; i++) { for (let v = 0; v<strs[i].length; v++) { if (firstStr[v] === strs[i][v]) { newArr.push(strs[i][v]) } else { firstStr = newArr.splice(0,v); console.log(firstStr) break; } } } return firstStr.join('') }
공통되는 앞글자를 비교하기 위해서 배열에서의 첫번째 글자를 지정해주고
해당 글자를 뒤에 있는 글자들과 하나씩 비교해 준뒤
맞지 않는 글자가 있을 때, 반복문을 중지하고 지금까지 저장된 글자를
다시 firstStr에 넣어줘서 계속 비교해주게 했다.
이렇게 하면 글자는 나오긴 하는데 이상하게
join이라는 function이 없다는 오류가 나와서 몇개가 맞지 않았다.
const getPrefix = (strs) => { let prefix = strs[0]; for(let i=1; i<strs.length; i++){ while(strs[i].indexOf(prefix) !== 0){ prefix = prefix.substring(0, prefix.length-1) } console.log(prefix); } return (prefix === undefined ? "" : prefix) }
배열의 첫번째 글자를 비교 글자로 넣어주고,
그 글자와 뒤의 글자들을 indexOf()를 통해 비교를 하고,
-1 이 나온다면 글자를 하나씩 뒤에서 줄여나가
이 과정을 반복하는 형태로 코드가 짜져있다.
그렇게 0이 나오게 된다면 prefix를 내보내는 형태다.
이렇게 다른 글자들과 비교해서 최종으로 남은 글자를 내보내는 방식으로
문제를 풀면 되겠다.