Q.
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
function solution(arr) {
return arr.length >= 2
? arr.filter(e => e !== Math.min(...arr))
: [-1]
}
단순히 배열에서 가장 작은 값(Math.min)을 제거하고
filter를 써서 거르기,,
근데 여기서 테스트 케이스 2가 시간이 엄청 오래 걸린다
효율적인 코드는 아닌듯...
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)),1);
if(arr.length<1)return[-1];
return arr;
}
splice를 통해 배열의 가장 작은 값의 index를 구하여 하나를 제거해준다
arr.indexOf(Math.min(...arr)
이 부분에서 만약 배열의 길이가 하나라면
Math.min()
가장 작은 값의 인덱스가 0이 될테고
arr.indexOf()
를 해서 나오는 결과 값이 0이 될 것이다.
그럼,arr.splice(0,1)
배열 안의 모든 값을 삭제해서 빈 배열만 남게 된다.
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum');
// myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed is [], no elements removed
splice()는 배열의 값을 바꿔서 새로운 배열을 반환해준다
첫번째 인자로는 바꿀 위치의 index값
두번째 인자로는 (마이너스 개념)바꿀 위치부터 몇개를 바꿀건지?
세번째 인자로는 배열에 추가할 요소
+indexOf는 일치하는 값이 있으면 그거 반환하고 아님 -1반환,,