본문 바로가기

언어/JavaScript

자바스크립트(JavaScirpt) - some() 배열 내장 함수 #3 [엄탱 개발일지]

728x90

안녕하세요! 숯 같은 개발자 엄탱이라고 합니다!

오늘 하루도 많이 힘드셨나요?? 저도요... 위로 같은 거 없습니다ㅋㅋㅋ

오늘은 필라테스 운동을 하러 가기 전에 배열의 내장 함수 some 정의, 사용법, 주의사항 기타 등등에 대해서 알아보겠습니다!

틀린 내용 혹은 부족한 내용은 언제든 알려주시면 감사하겠습니다 :)

  • some 정의
  • some 사용법
  • some과 includes의 차이점
  • some 주의사항

 

some 한 줄 정리

some은 배열 내 콜백 함수에서 정의한 조건에 맞는 값이 있는지 확인할 수 있는 함수입니다.

 

some 정의

우선 some의 사전적 의미를 알고 가보실까요??

    • 조금 [약간의/몇몇의]
    • 일부의 [어떤]
    • 몇몇, 몇 개

some은 위와 같은 사전적 의미를 갖고 있습니다! 이게 무슨 뜻일까요??

MDN사이트에서 some에 대해서 어떻게 정의하고 설명하는지 알아보겠습니다.

 

MDN
some은 callback 함수가 true를 반환하는 요소를 찾을 때까지 배열에 있는 각 요소에 대해 한 번씩 callback 함수를 실행합니다. 해당하는 요소를 발견한 경우 some은 즉시 true를 반환합니다. 그렇지 않으면, 즉 모든 값에서 거짓을 반환하면 false를 반환합니다. 할당한 값이 있는 배열의 인덱스에서만 callback을 호출합니다. 삭제했거나 값을 할당한 적이 없는 인덱스에서는 호출하지 않습니다.

이 말을 간단히 해석해보자면, some은 콜백 함수의 조건에 맞는 값의 유무를 알려주는 함수라 할 수 있습니다.

이 부분을 사전적인 의미와 어떻게 합치면 좋을까요?? 이 부분에 대해서 설명해 주실 수 있는 분은 댓글로 설명해주시면 감사하겠습니다 :)

위의 예시를 보시면 배열의 값들 중에 2로 나눠서 나머지가 0이 나오는 값이 있으면 true를 return 해줍니다. 

그리고 MDN에서 설명했듯이 해당 요소를 발견한 경우 즉시 true를 반환하기 때문에, some 함수는 1, 2 까지만 탐색하고 나서 종료하게 됩니다. 

 

some 사용법

사용법은 간단합니다.

some 콜백 함수에 원하는 조건식을 작성하면 됩니다.

그러면 콜백 함수가 돌면서 해당 조건문의 테스트를 통과하는 값이 있다면 true값을 리턴해줍니다.

 

여기서 잠깐!!!
some은 무언가 배열 내장 함수 includes() 함수와 매우 비슷한 것 같은데 어떤 차이점이 있을 까요??

some()
1. 조건문에 맞는 값의 유무를 boolean 값으로 알려줍니다.
2. 조건문을 이용해 배열 안에 값이 참조형(객체) 일 경우에 참조형(객체) 안에 있는 데이터가 일치하는지 확인할 수 있습니다.

includes() 
1. 파라미터 값이 일치하는 값의 유무를 boolean 값으로 알려줍니다. 
2. 값을 비교할 때 '===' 연산자를 사용하기 때문에 참조형의 데이터를 확인하는 경우보다는 기본형에 적합합니다.

정리하자면, 기본형(primitive type)을 찾고 싶으면 includes(), 참조형 값의 유무를 찾고 싶으면 some()을 사용하는 게 좋을 것 같네요!

some 주의사항

MDN

some이 처리하는 요소의 범위는 callback의 첫 호출 전에 설정됩니다. some 호출 이후로 배열에 추가하는 요소는 callback 이 방문하지 않습니다. 배열에 원래 있었지만 아직 방문하지 않은 요소가 callback에 의해 변경된 경우, 그 인덱스를 방문하는 시점의 값을 사용합니다. 삭제한 요소는 방문하지 않습니다.

some의 주의사항은 map, filter함수와 동일하여 자세한 설명은 생략하도록 하겠습니다! 

내장 함수 map 보러 가기

내장 함수 filter 보러 가기

 

오늘의 내용은 여기까지입니다!

오늘은 글만 잔뜩 있어서 읽기 힘드셨을 텐데 읽어주셔서 감사합니다 :)

좋아요 및 댓글 달아주시면 감사하겠습니다 :) 

궁금한 내용 및 잘못된 내용을 위한 댓글 혹은 토론하고 싶은 댓글은 백번, 만 번 환영입니다!!!

728x90