금일 테스트 케이스가 추가되어 기존 코드로는 통과할 수 없게 되었다. 때문에 코드를 수정했다.
function isAnagram(a, b) {
const sortA = a
.replaceAll(" ", "")
.split("")
.map((str) => str.toLowerCase())
.sort();
const sortB = b
.replaceAll(" ", "")
.split("")
.map((str) => str.toLowerCase())
.sort();
for (let i = 0; i < sortA.length; i++) {
if (sortA[i] !== sortB[i]) {
return false;
}
}
return true;
}
두 단어를 비교하기 쉽도록 새로운 변수를 만들어준다.
해당 변수에서는 우선 공백을 제거하고, 각 단어를 배열로 만들어 map() 메서드로 전부 소문자로 변경하고, 순서를 정리하기 위해 sort() 메서드를 적용한다.
이 경우 한 단어가 알파벳 순서를 바꾸어 다른 단어를 만들 수 있다면 배열의 요소와 순서가 전부 같다는 점을 이용했다.
반복문을 사용해 sort()가 적용된 배열의 각 요소가 다를 경우 바로 false를 return한다.
false 없이 반복문을 전부 돌았다면 두 배열의 요소가 같다는 말이기 때문에 true를 return한다.