문제 설명
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한 조건
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
입출력 예
arr return
[4,3,2,1][4,3,2]
[10][-1]
처음 생각은 arr에서 제일 작은 수는 Math.min(...arr)로 구할 수 있다 ->
이때 최솟값은 배열형식으로 나오는게 아니다 ->
빈 배열 A에 최솟값을 push()해준다.
이었는데 filter() reduce를하는 방식으로 답안을 작성하게되었다.
filter(num =>
num !== min )
에서 filter안에 중괄호를 사용하니 오류가 나서 수정하였음.
➕ 배열 간의 뺄셈하는 방법?? -> filter 메서드를 이용 또는 reduce 메서드를 이용
예시 : filter 메서드 이용
let array1 = [1, 2, 3, 4, 5];
let array2 = [2, 4];
let result = array1.filter(item => !array2.includes(item));
console.log(result); // [1, 3, 5]
예시 : reduce 메서드 이용
let array1 = [1, 2, 3, 4, 5];
let array2 = [2, 4];
let result = array1.reduce((acc, current) => {
if (!array2.includes(current)) {
acc.push(current);
}
return acc;
}, []);
console.log(result); // [1, 3, 5]
👉 제출 답안
function solution(arr) {
var answer = [];
let min = Math.min(...arr)
if(arr.length == 1) {
answer = [-1];
} else {
answer = arr.filter(num =>
num !== min )
}
return answer;
}
fetch("여기에 URL을 입력").then(res => res.json()).then(data => {
console.log(data)
})