배열의 중간값을 리턴하는 함수를 만드는 알고리즘 문제였으나 중간값을 찾는 코드는 구현해냈지만 배열을 오름차순으로 정렬하는 코드는 구현해보았으나 작동이 제대로 이루어지지 않았음
Restrictions
array의 길이는 홀수
0 < array의 길이 < 100
-1,000 < array의 원소 < 1,000
배열을 오름차순으로 정렬해주는 코드가 제대로 작동하지 않음
function solution(array) {
if (array.lengh === 1) {
const answer = array[0]
return answer;
} else {
const middle = Math.floor(array.length / 2)
const answer = array.sort()[middle]
return answer;
}
}
console.log(solution([1, 2, 3, 4, 5])) // 3
console.log(solution([9, -1, 0])) // 0
배열의 길이가 1 이면 무조건 배열의 첫번째 인덱스의 값을 리턴하도록 하고 그게 아니면 중간인덱스를 구하는 것과 배열을 오름차순해준 후 중간인덱스로 값을 리턴하게끔 만들었음
그런데 배열의 값을 [4, 6, 4, 23, 8, 12] 를 매개변수로 가져오면 sort()에서 [12, 23, 4, 4, 6, 8]로 정렬이 되는 것을 확인함.
const answer = array.sort((a, b) => {
return a - b;
})[middle]
sort() 메서드에 대해 다시 공부해서 코드를 변경하였음. 또한 처음 조건을 주었던 배열의 길이가 1일 때라는 조건은 필요없음을 알고 삭제하였음.
function solution(array) {
const middle = Math.floor(array.length / 2)
const answer = array.sort((a, b) => {
return a - b;
})[middle]
return answer;
}
sort() 안에 있는 함수는 내장되어 있는 compareFn 함수로 배열의 숫자들을 오름차순으로 바꿔주는 함수임. 이 괄호 안이 비어있으면 요소를 문자열로 변환하고 유니코드 포인트 순서로 문자열을 비교하여 정렬하게됨. 그래서 [4, 6, 4, 23, 8, 12]라는 배열이 [12, 23, 4, 4, 6, 8]로 정렬되었던 것임.
참고링크 : 모질라