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

}

 

번호 제목 글쓴이 날짜 조회 수
237 json 데이터 내의 변수명에 prefix 로 type 표현하기 황제낙엽 2024.04.15 0
236 fetch() 함수 사용 예제 file 황제낙엽 2023.11.23 1
235 현재 document 의 host 와 port 를 얻는 방법 황제낙엽 2023.10.03 1
234 (Bard) FileReader 로 여러개의 파일을 read 하는 법 file 황제낙엽 2023.08.23 0
233 How to build a file upload service with vanilla JavaScript file 황제낙엽 2023.08.22 0
232 (Bard) JavaScript로 JSON 배열을 작성하는 방법 황제낙엽 2023.08.21 0
231 모바일 브라우저에서 file input element 를 이용하여 여러장의 이미지를 서버에 전송하려 할때 황제낙엽 2023.08.21 0
230 navigator.mediaDevices 황제낙엽 2023.08.21 1
229 Barcode Detection API 황제낙엽 2023.08.06 6
228 정규식을 이용한 이메일 검증 스크립트 file 황제낙엽 2023.06.25 0
227 체크박스에 체크된 항목 개수 구하기 황제낙엽 2023.06.10 1
226 JSON 클래스가 지원하는 function 황제낙엽 2023.03.31 1
225 (Copilot) JSON 객체의 내부 데이터 리스트 길이를 구하는 방법 황제낙엽 2023.03.30 2
» 배열에 대한 루프문 조회 (loop iterator) 황제낙엽 2023.03.01 3
223 (Copilot) 바닐라 스크립트가 뭐지? 황제낙엽 2023.02.24 7
222 CryptoJS 를 이용한 암호화 황제낙엽 2023.02.15 1
221 [URLSearchParams] URL 파라미터(매개변수) 값 가져오기 file 황제낙엽 2023.02.02 0
220 Fetch API (CORS 극복을 위한 노력) 황제낙엽 2021.12.05 26
219 두 서버의 자원을 접근하는 클라이언트 프레임웍(Next.js)에서의 CORS오류 file 황제낙엽 2021.12.05 228
218 CORS 의 내용과 이에 대한 우회 방안들 file 황제낙엽 2021.12.05 139