두 문자열에 일치하는 문자가 있는지 확인하는 함수 중 가장 널리 쓰이고 있는 .indexOf()
이 함수를 사용할 때 중요한 점은 비교대상 문자열이 무엇인지 잘 인지하고 있어야 한다는 점이다.(안그러면 내가 원하는 결과값이 안나올 수 있어요...)
간단한 예로
aGroupStr 에는 ',' 로 이어붙인 문자열 "우리,나라,만세" 가 있고
bGroupStr 에는 단어 "우리" 가 있다고 했을 때,
aGroupStr 입장에서 bGroupStr 문자가 자기한테 있는지 확인하는거랑
bGroupStr 입장에서 aGroupStr 문자가 자기한테 있는지 확인하는거랑 리턴되는 값이 다르다.
let aGroupStr = "우리,나라,만세";
let bGroupStr = "우리";
console.log("aGroupStr 입장 : " + aGroupStr.indexOf(bGroupStr)); // 0
console.log("bGroupStr 입장 : " + bGroupStr.indexOf(aGroupStr)); // -1
jQuery 3.1 release note 에서 표준화 한 format 을 따르면 [참고]
"우리,나라,만세" 입장에서는 "우리" 가 있다고 생각했고,
"우리" 입장에서는 "우리,나라,만세" 가 없다고 생각하고 있다.
이럴 땐 다양한 해결방법이 있겠지만, 홈주는 javascript array function 중 하나인 .some() 을 이용하여
배열 요소 중 하나라도 특정 조건을 만족하는지 판단하는 로직으로 개발하였다.
let aGroupArray = ['우리','나라','만세'];
let bGroupArray = ['우리','나라'];
aGroupArray.some(function(item) {
return bGroupArray.indexOf(item) > -1;
})
주체가 무엇이냐에 따라 내가 생각하는 결과값이 다르게 리턴될 수 있음을 명심하고,
적절한 상황에 적절한 함수를 사용하는 것이 바람직하다. 는 것을 또 한 번 깨닫는 시행착오였다.
메모메모 :)
반응형
'Frontend > JavaScript' 카테고리의 다른 글
[Javascript] array function 주의점 (역시나 주인공은 IE) (0) | 2021.05.26 |
---|---|
[Javascript] RegExp 정규식으로 입력 문자패턴 체크 (특수문자 넣었는데 왜 안돼!) (0) | 2021.02.17 |
[JavaScript] window.onerror 정리 (0) | 2021.02.01 |
[Javascript] 자바스크립트 배열 값 중 최대값 찾기 (0) | 2020.07.03 |
[Javascript] Object 객체에 .forEach() 가 안먹을 때 (0) | 2020.05.14 |
댓글