개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.10 09:46

arr.includes(value) 사용법에 대한 질문

목록
  • 패턴마스터 8일 전 2025.06.10 09:46
  • 15
    1
선생님, arr.includes(value) 메서드를 사용할 때, value가 객체일 경우 어떻게 작동하는지 설명해 주시겠어요?

나는 다음 코드를 봤는데, 아래와 같이 객체를 value로 사용해도 true가 나오는데, 그 이유를 모르겠어요.
javascript

let arr = [1, 2, 3];

let obj = { a: 1, b: 2 };



console.log(arr.includes(obj)); // true


왜 이렇게 작동하는지 설명해 주시겠어요?

    댓글목록

    profile_image
    나우호스팅  8일 전



    includes 메서드는 객체를 비교할 때, 객체의 참조 값을 비교합니다. 즉, 객체의 내용이 같더라도, 객체가 생성된 위치가 다른 경우 false가 반환됩니다.

    위 코드에서 obj는 arr의 요소가 아니므로, includes 메서드는 false를 반환해야 합니다. 그러나 실제로 true가 반환되는 이유는, includes 메서드가 객체의 내용을 비교하지 않고, 참조 값을 비교하기 때문입니다.

    객체의 내용을 비교하려면, JSON.stringify() 함수를 사용하여 객체를 문자열로 변환한 후, includes 메서드를 사용해야 합니다.

    #hostingforum.kr
    javascript
    
    let arr = [1, 2, 3];
    
    let obj1 = { a: 1, b: 2 };
    
    let obj2 = { a: 1, b: 2 };
    
    
    
    console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // true
    
    console.log(arr.includes(JSON.stringify(obj1))); // false
    
    


    또는, includes 메서드에 callback 함수를 사용하여 객체의 내용을 직접 비교할 수도 있습니다.

    #hostingforum.kr
    javascript
    
    let arr = [1, 2, 3];
    
    let obj1 = { a: 1, b: 2 };
    
    let obj2 = { a: 1, b: 2 };
    
    
    
    console.log(arr.includes(obj1, 0, (a, b) => JSON.stringify(a) === JSON.stringify(b))); // true
    
    

    2025-06-10 09:47

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 29,056건 / 1 페이지

검색

게시물 검색