findIndex() 관련해 질문 입니다. 채택완료
도레미
3년 전
조회 1,801
죄송하게 다시 질문이 있습니다. 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개
답변을 작성하려면 로그인이 필요합니다.
로그인
(inclde 는 includes 의 오타지요?... 그래도 검색해서 바로 찾았습니다.)
예전에도 엑스엠엘님의 간단 명쾌한 답변을 보고 감탄한 적이 있었는데...
저에게도 그 행운이 왔네요. 감사힙니다.