JS.연습문제 (제일 작은 수 제거하기)

<문제설명>

정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세용
리턴하려는 배열이 빈 배열일 경우에는 배열에 -1을 채워 리턴


function solution(arr) {
  if (arr.length <= 1) {
  	return [-1]
  }
  else
    let answer = []
	for (let i = 0; i < arr.length; i++) {
		if (arr[i] < arr[i+1]) {
        	answer = arr[i]
        }    
    }
  	let minnumber = arr.filter(itme => answer);
  return minnumber
}

arr에 값이 하나거나 없는 경우 -1을 리턴하도록 하고 그렇지않은 경우 반복문으로 배열에 0 인덱스부터 끝까지 비교해서 가장 작은 값을 answer에 집어넣었다
그리고 필터로 answer을 걸러지도록 했다

<다른사람의 풀이>

function solution(arr) {
	if (arr.length <= 1) return [-1];
	arr.splice(arr,indexOf(Math.min(...arr)), 1);
  	return arr
}

배열 arr에서 최솟값을 찾은후/ 그 인덱스를 하나 제거하고 반환하는 식이다.
-splice가 어떤식으로 쓰이는지 다시 보게됨
배열일 경우 Math.min "..."을 붙임

<또 다른사람의 풀이>

function solution(arr) {
	if (arr.length === 1) {
    	return [-1]
    }
  	const minValue = Math.min.apply(null, arr)
    const index = arr.findIndex(value => value === minValue)
    arr,splice(index, 1)
  return arr
}

apply 메서드는 함수 객체의 메서드인데 두 번째 인자의 값으로 어레이르 받아 각 어레이의 요소를 함수의 인자로 전부 넘겨줌
-첫번째 인수는 해당 함수 내의 this에 연결되는 값으로 만약 this가 상관 없는 하무라면 별 의미가 없기 때문에 null이나 undefined를 넣어줌
findIndex() 메소드는 주어진 함수를 통과한 첫 번째 요소의 인덱스 값을 반환!
value가 minValue최솟값과 갔다면 해당 인덱스를 index에 넣음
splice로 해당 인덱스 하나를 제거!

좋은 웹페이지 즐겨찾기