findIndex() 관련해 질문 입니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
findIndex() 관련해 질문 입니다.

QA

findIndex() 관련해 질문 입니다.

본문

 

죄송하게 다시 질문이 있습니다.
findIndex 로 검색하고자 하는 문자열을 포함하는 배열의 첫번째  index 값을 찾을 수 있을까요?

 

예를들어 아래 코드는 1 번이 고유번호 이므로 문제없이 잘 찾습니다.

 


<script>
var txt = '[{"id":"1","name":"갑돌이"},{"id":"2","name":"갑순이"},{"id":"3","name":"다리미"}]';
var obj = JSON.parse(txt);
var search = '1';
var idx = obj.findIndex(x => x.id == search);
console.log(obj[idx].name);
</script>

 

그런데 위 코드는 findIndex(x => x.id == search) 로 정확하게 매치되는 값이 1개 이니 되는데,
제가 원하는 것은 검색글자를 포함한 결과 여러개 중에서 첫번째 자료의 index 를 알고 싶습니다.

 

아래 코드는 '갑' 이란 글자로 검색하니 매칭되는게 없어서 에러납니다.

 


<script>
var txt = '[{"id":"1","name":"갑돌이"},{"id":"2","name":"갑순이"},{"id":"3","name":"다리미"}]';
var obj = JSON.parse(txt);
var search = '갑';
var idx = obj.findIndex(x => x.name == search);
console.log(obj[idx].name);
</script>

 

위 코드의 findIndex(x => x.name == search) 에서 조건을 x.name ?? search 같이 뭔가 어떤 연산자 같은 것으로 하면 배열로 결과를 출력하고,
그 결과값의 [0] 첫번째 index를 보면 '갑돌이' 를 찾을 것 같은데...ㅠ ([1]은 갑순이가 되겠죠)
for 루프로 돌리면서 indexOf 로 찾으면 될것 같기도 한데, 뭔가 더 간단한 방법도 있지 않을까 싶어 문의 드립니다.
 
요약하면 객체에서 원하는 검색어를 포함하는 요소가 있는 것들만 배열로 출력하는 방법?  
자꾸 물어 보기만 해서 죄송합니다..ㅠ
 

이 질문에 댓글 쓰기 :

답변 1

x => x.name.inclde( search)

허걱~ 역시 있었군요...
(inclde 는 includes 의 오타지요?... 그래도 검색해서 바로 찾았습니다.)

예전에도 엑스엠엘님의 간단 명쾌한 답변을 보고 감탄한 적이 있었는데...
저에게도 그 행운이 왔네요.  감사힙니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 21
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT