정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
✔ 처음 풀이
function solution(arr) {
var answer = [];
answer = arr.sort((a, b) => b - a); //내림차순 정렬
answer.pop(); //가장 끝에 있는 수 = min값 삭제
if (answer.length === 0) {
return [-1];
} else {
return answer;
}
}
=> 이렇게 풀면 무조건 내림차순 정렬이 된다.
☹ 문제 이해를 잘 못한거 같다... 테스트 케이스 추가해서 해보니, 문제에서 원하는 건 배열을 내림차순하라는게 아니라, 배열 전체에서 최소값을 찾아서 그 친구만 빼라는 것!
✔ 다시 풀기 - Math.min(), 스프레드 문법 이용
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)),1);
if(arr.length<1){
return [-1];
}else{
return arr;
}
}
📌 개념 정리
-전달 받은 인수 중에서 가장 작은 수를 반환한다.
-인수가 전달되지 않을 경우 Infinity를 반환한다.
Math.min(1); //1
Math.min(1, 2); //1
Math.min(1, 2, 3); //1
Math.min(); //Infinity
-배열을 인수로 전달받고, 그 배열 요소 중 최소값을 구하기
=>Function.prototype.apply메서드 이용 or 스프레드 문법 사용
//배열 요소 중 최소값 취득
Math.min.apply(null, [1, 2, 3]); //1
//ES6 스프레드 문법
Math.min(...[1, 2, 3]); //1
📌 개념 정리
-배열이나 문자열과 같이 반복 가능한 문자를 0개 이상의 인수 또는 요소 로 확장하여, 0개 이상의 키-값의 쌍으로 객체로 확장가능하다.
//(1) 함수 호출
myFunction(...Obj);
//(2) 배열 리터럴과 문자열
[...Obj, '4', 'five', 6];
//(3) 객체 리터럴 추가
let objClone = { ...obj };