Front/JS & jQuery

[js] json 배열 특정 값 포함여부 확인하기 / includes() 대신

오선지♬ 2024. 4. 6. 11:55
728x90
반응형

처음 작성한 코드


if(!this.checkList.includes({ crCd : crCd, itemCd : itemCd, seq : seq})){
    this.checkList.push({ crCd : crCd, itemCd : itemCd, seq : seq});
}

 

JavaScript의 includes() 메서드는 주어진 요소가 배열에 포함되어 있는지를 확인합니다. 그러나 여기서 문제가 발생하는 이유는 includes() 메서드가 객체의 비교를 수행할 때 참조에 따라 동작하기 때문입니다. 객체가 동일한 참조를 가질 때에만 includes()는 해당 객체를 찾을 수 있습니다.

따라서 { crCd : crCd, itemCd : itemCd, seq : seq}와 같은 새로운 객체를 includes()로 찾을 수 없습니다. 대신에 객체가 동일한 속성 값을 갖고 있는지 확인해야 합니다.

다음과 같이 수정할 수 있습니다.

if(!this.checkList.some(item => item.crCd === crCd && item.itemCd === itemCd && item.seq === seq)) {
    this.checkList.push({ crCd : crCd, itemCd : itemCd, seq : seq});
}

 

728x90
반응형