JSON 배열 찾는 법 좀 알려 주세요..
본문
두가지 질문입니다.
첫번째는 아래와 같은 배열에서 특정 id 값인 요소를 찾은뒤, name 을 알아 내려면 ?? 자리에 어떻게 해야 하는지??
<script>
var txt = '[{"id":"1","name":"가갑순"},{"id":"2","name":"나도순"},{"id":"3","name":"다리미"}]';
var obj = JSON.parse(txt);
var name = ?? //-- id 가 2인 것을 찾아서 이름(나도순)을 저장
alert(name);
</script>
두번째는 아래 JSON 문자열(txt)이 좀 다릅니다.
student 의 요소로 배열을 사용한 객체입니다.
이 경우에 는 배열에서 name='나도순' 을 찾은뒤, id 값을 알아 내려면??
<script>
var txt = '{"student":[{"id":"1","name":"가갑순"},{"id":"2","name":"나도순"},{"id":"3","name":"다리미"}]}';
var obj = JSON.parse(txt);
var no = ?? //--- '나도순' 이름으로 찾아서 번호(2)를 저장
alert(no); // 번호 출력
</script>
여기저기 검색해도 객체 만드는 법과 1개일때는 설명이 많은데 다중배열객체에서 특정 배열요소만 찾는 방법을 못찾겠습니다...ㅠ
!-->!-->
답변 3
이것도 가능
for (var i = 0; i < obj.length; i++) {
if(obj[i].id==2){ name =obj[i].name; break;}
}
-----------------------------------------------
for (var i = 0; i < obj["student"].length; i++) {
if(obj["student"][i].name=="다리미"){ id = obj["student"][i].id; break;}
}
자문자답 겸 추가질문...
이런식으로 하니까 되네요.
위 코드의 ?? 자리에 아래 코드를 넣었습니다.
var i = obj.findIndex((k)=>k.id==2);
var name = obj[i].name ;
alert(name);
그런데 더 쉬운 방법은 없나요?... findIndex 코드가 사용하기 좀 어렵네요...ㅠ
복잡해 보이는 건 마찬가지네요...ㅎ
배열요소에서 고유한 값이 있으면 루프없이 뭔가 간단한 함수나 방법이 있지 않나 싶었습니다.
예를들면...
var name = get(obj.id=2, name) // 여기서 get 은 제가 상상한(?) 이름입니다....ㅎ
그래도 가장 평범한 말씀하신 방법으로 찾는 것도 좋은 방법 같습니다.
답변을 작성하시기 전에 로그인 해주세요.