sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
배열을 순회할 일이 많다
특히 json을 다룰 경우
그래서 for/in , for/of , forEach 에 대해 조사했다
서버로부터 boxes 라는 json 배열 문자열을 전달받는다
{"boxes":[{"name":"기본박스","items":[],"seq":1},{"name":"실온실","items":[{"qty":1,"name":"당근","seq":4},{"qty":5,"name":"사과","seq":5}],"seq":2},{"name":"냉장실","items":[{"qty":8,"name":"사과","seq":2}],"seq":3},{"name":"냉동실","items":[],"seq":4},{"name":"다용도실","items":[],"seq":5},{"name":"작은냉동실","items":[{"qty":1,"name":"소고기","seq":1}],"seq":6},{"name":"장난감함","items":[{"qty":1,"name":"퐁당핑","seq":3}],"seq":7}]}
전달받은 json 문자열(resMsg)을 js 에서 다음과 같이 파싱한다
let boxesJo = JSON.parse(resMsg)["boxes"];
이후 다음의 코드들은 모두 boxesJo 를 조회하며 Box Card 를 생성한다
[A] for in
for (idxb in boxesJo) {
createBoxcard(boxesJo[idxb].name, null, boxesJo[idxb].items);
}
[B] for of
for (box of boxesJo) {
createBoxcard(box.name, null, box.items);
}
[C] forEach
boxesJo.forEach(box => {
createBoxcard(box.name, null, box.items);
});
for/in 과 for/of 의 차이점은 for/in 은 배열의 index 를 반환하고 for/of 는 배열내의 아이템 자체(오브젝트)를 반환한다
for/in 을 사용할 용도는 iterator 형태의 배열을 순회하기보다는 그냥 오브젝트 자체가 가진 속성들(Attributes)들을 순회할때 사용한다
가령 boxesJo.attr1 = "TEST"; 을 추가하고 for/in 을 순회하면 box 목록에는 "attr1" 도 포함되어 있게 된다
다음의 코드 예제를 다시 살펴보자
Object.prototype.objCustom = function () {};
Array.prototype.arrCustom = function () {};
let iterable = [3, 5, 7];
iterable.foo = "hello";
for (let i in iterable) {
console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}
for (let i of iterable) {
console.log(i); // logs 3, 5, 7
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
17 | [URLSearchParams] URL 파라미터(매개변수) 값 가져오기 | 황제낙엽 | 2023.02.02 | 0 |
16 | CryptoJS 를 이용한 암호화 | 황제낙엽 | 2023.02.15 | 1 |
15 | (Copilot) 바닐라 스크립트가 뭐지? | 황제낙엽 | 2023.02.24 | 7 |
» | 배열에 대한 루프문 조회 (loop iterator) | 황제낙엽 | 2023.03.01 | 3 |
13 | (Copilot) JSON 객체의 내부 데이터 리스트 길이를 구하는 방법 | 황제낙엽 | 2023.03.30 | 2 |
12 | JSON 클래스가 지원하는 function | 황제낙엽 | 2023.03.31 | 1 |
11 | 체크박스에 체크된 항목 개수 구하기 | 황제낙엽 | 2023.06.10 | 1 |
10 | 정규식을 이용한 이메일 검증 스크립트 | 황제낙엽 | 2023.06.25 | 0 |
9 | Barcode Detection API | 황제낙엽 | 2023.08.06 | 7 |
8 | navigator.mediaDevices | 황제낙엽 | 2023.08.21 | 1 |
7 | 모바일 브라우저에서 file input element 를 이용하여 여러장의 이미지를 서버에 전송하려 할때 | 황제낙엽 | 2023.08.21 | 1 |
6 | (Bard) JavaScript로 JSON 배열을 작성하는 방법 | 황제낙엽 | 2023.08.21 | 0 |
5 | How to build a file upload service with vanilla JavaScript | 황제낙엽 | 2023.08.22 | 0 |
4 | (Bard) FileReader 로 여러개의 파일을 read 하는 법 | 황제낙엽 | 2023.08.23 | 0 |
3 | 현재 document 의 host 와 port 를 얻는 방법 | 황제낙엽 | 2023.10.03 | 1 |
2 | fetch() 함수 사용 예제 | 황제낙엽 | 2023.11.23 | 1 |
1 | json 데이터 내의 변수명에 prefix 로 type 표현하기 | 황제낙엽 | 2024.04.15 | 0 |