본문 바로가기

자바스크립트

내가 고른 값이 배열 안에 존재하는 지 확인하는 방법, 존재하면 그 값을 리턴

728x90

자바스크립트를 공부하는 중에,

많이 쓰일 것 같아서 정리해 놓으려고 합니다.

많은 분들에게도 참고가 되셨으면 좋겠습니다.

 

바로 들어갑니다.

 

배열이 존재합니다.

arr = [1,2,3,4,5,10,23,30,40]

내가 고른 값이 이 배열에 있는 지 확인하고 싶습니다. 

 

예를 들어 내가 선택한 값이 11 이라면 

(물론 한 눈에 보기에도 존재하지 않지만 함수로 정리 해 봅시다)

(급하신 분은 맨 밑에 식만 정리 해 놓았으니, 그곳을 참고해주십쇼)

첫번째 방법

for문을 이용하여 찾는 방법

1. 함수를 정의합니다.

function checkArray () {
	// TODO
}

2. 대상 배열을 첫번째 매개변수에 지정하고,  javascript의 for문을 이용하여 배열 arr을 순회합니다.

function checkArray (arr) {
	for(let i = 0; i < arr.length; i++) {
    	// TODO
    }
}

 

3.  내가 지정한 값을 두 번째 매개변수에 지정하고, TODO안에 대상 배열의 값과 내가 지정한 값을 비교하는 식을 씁니다.

function checkArray (arr , target) {
	for(let i = 0; i < arr.length; i++) {
    	arr[i] === target
    }
}

4. 만약 일치하는 값이 있다면  그 값을 리턴값으로, 없다면 -1 을 내보내도록 하는 식을 추가기재한다.

function checkArray (arr , target) {
	for(let i = 0; i < arr.length; i++) {
    	if (arr[i] === target) {
        	return arr[i] // 대상 배열에 내가 고른 값이 있다면 그 값을 리턴
        } 
    }
    return -1  // 없다면 -1을 리턴
}

끝! 확인 한번 해봅시다!

 

arr = [1,2,3,4,5,10,23,30,40]

이고 내가 고른 값이 11 이었으니

 

 

console.log

-1이 나오는 걸 확인 할 수 있었습니다. 

만약 내가 고른 값이 23 이라면 ?

배열안에 들어있기 때문에 그 값이 리턴되어 나오는 걸 확인 할 수 있었습니다!

 

두번째 방법(indexOf)

 

배열의 프롤토타입중 indexOf라는 메서드를 이용하여 찾는 방법입니다.

이것은 배열안의 값과 내가 고른 값을 비교하여 존재하면 그 인덱스를, 

존재하지 않으면 -1을 반환합니다

 

바로 식을 작성 해 보도록 하겠습니다

 

function checkArray (arr, target) {
  const index = arr.indexOf(target); // indexOf를 이용하여 배열의 값에 내가 고른 값이 있는지 비교합니다
  return index !== -1 ? arr[index] : -1; // 만약에 존재하면 그 값을, 존재하지 않으면 -1을 반환
}

이것도 확인을 해보면,

 

indexOf를 이용하여 배열 비교

31은 arr배열 안에 존재하지 않으므로 -1을 반환,

40은 arr배열 안에 존재하므로 40을 반환하는 것을 볼 수 있습니다.

 

세번째 방법(includes)

마지막으로 includes를 이용하여 찾는 방법인데

이 메서드도 비슷하게 배열안의 값과 내가 정한 값을 비교합니다.

 

function checkArray (arr, target) {
  return arr.includes(target) ? target : -1;
  // 삼항연산자를 이용하여 arr 값 안에 내가 고른 값이 있으면 그 값을, 없으면 -1을 반환
}

식이 훨씬 줄어든 걸 볼 수 있습니다.

includes를 이용하여 배열 비교

 

 

정리

1.

function checkArray (arr , target) {
	for(let i = 0; i < arr.length; i++) {
    	if (arr[i] === target) {
        	return arr[i] // 대상 배열에 내가 고른 값이 있다면 그 값을 리턴
        } 
    }
    return -1  // 없다면 -1을 리턴
}

2.

function checkArray (arr, target) {
  const index = arr.indexOf(target); // indexOf를 이용하여 배열의 값에 내가 고른 값이 있는지 비교합니다
  return index !== -1 ? arr[index] : -1; // 만약에 존재하면 그 값을, 존재하지 않으면 -1을 반환
}

3.

function checkArray (arr, target) {
  return arr.includes(target) ? target : -1;
}

 

 

식은 다르지만, 같은 결과를 내보내는 것을 확인 할 수 있었습니다.

혹시 배열을 비교해야 할 필요가 있을 때 참고가 될 것 같습니다. 감사합니다!

728x90