sort((a,b) => a-b) 를 구현하지 못해서 실패
test하다가 내 코드 날렸다..
나는 for문으로 구현하려 했었다.
-01
function solution(array, commands) {
return commands.map(
([from, to, k]) => // map에서 불러온 배열들을 순서대로 from,to,k 로 넣는다
// 배열에 넣기때문에 인덱스의 값이 아닌 배열들의 순서대로 변수가 주어짐
array.slice(from - 1, to).sort((a, b) => a - b)[k - 1],
);
-02
function solution(array, commands) {
return commands.map(command => {
// command에 배열을 담고
const [sPosition, ePosition, position] = command
// 구조분해할당으로 그 배열들을 차례대로 변수에 담아준다
const newArray = array
// 새 배열 선언
.filter((value, fIndex) => fIndex >= sPosition - 1 && fIndex <= ePosition - 1)
// array의 배열을 가지고와서 filter를 하는데 인덱스를 사용하여 filter로 slice기능 구현
// newArray = 1 5 2 6 3 7 4 , sposition = 2 (-1 = 1) , eposition = 5 (-1 =4)
// 1 >= && 4 <= , index의 값이 1보다 크거나 같고 4보다 작거나 같을때
// idex ( 1,2,3,4 ) === [ 5,2,6,3 ]
// 이 부분이 충격..! slice(fINdex >= sPosition -1 , fIndex <= ePosition -1) 이런느낌?
.sort((a,b) => a - b)
// filter 한 배열을 sort로 정렬
// [ 2,3,5,6 ]
return newArray[position - 1]
// position = 3 / index는 2번째 인덱스니까 -1
// [2,3,5,6] 에서 2번째 index 5 return
// 이 return 값은 map 의 return
// 이걸 array에 담긴 배열의 수만큼 반복 !!)
})
}
이걸 깔끔하게 정리한게 -01번의 수식같다
구조분해할당
구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다.
배열 구조 분해 였다.
.sort((a, b) => a - b) MDN공식문서
메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다
(복사본 만들어지는것 X , 원 배열이 정렬)sort의 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
문자열 대신 숫자를 비교해야 할 때
배열의 오름차순
function compareNumbers(a, b) { return a - b; } - .sort((a, b) => a - b) // 오름차순 정렬?
const [sPosition, ePosition, position] = command