티스토리 뷰
1. [JS] FormData에 다차원 object append하기.
setFormData : 다차원 오브젝트를 Formdata에 append 할 수 있도록 도와주는 함수.
function setFormData(formData, data, parentKey) {
if (!(formData instanceof FormData)) return;
if (!(data instanceof Object)) return;
Object.keys(data).forEach((key) => {
const val = data[key];
if (parentKey) key = `${parentKey}[${key}]`;
if (val instanceof Object && !Array.isArray(val)) {
return setFormData(formData, val, key);
}
if (Array.isArray(val)) {
val.forEach((v, idx) => {
if (v instanceof Object) {
setFormData(formData, v, `${key}[${idx}]`);
} else {
formData.append(`${key}[${idx}]`, v);
}
});
} else {
formData.append(key, val);
}
});
}
setFormData함수 활용 예시
// 다차원 오브젝트 DummyData
const data = {
str_k: 'bloodguy',
int_k: 999,
bool_k: false,
obj_k: {
str_k2: 'nicehide',
int_k2: 222,
bool_k2: true,
obj_k2: { str_k3: 'str', int_k3: 333, bool_k3: false, arr_k3: [1, 'arr_str', true] },
arr_k2: [2, 'k2', { str_k_in_arr_k2: 'sss', int_k_in_arr_k2: 136 }],
},
friends: [
{ name: 'nicehide', gender: 'unknown' },
{ name: 'nobody', gender: 'female' },
],
};
// setFormData함수 적용
const formData = new FormData();
setFormData(formData, data);
const arrQueryString = [];
for (let pair of formData.entries()) {
console.log(`${pair[0]} = ${pair[1]}`);
arrQueryString.push(`${pair[0]}=${pair[1]}`);
}
//결과출력
str_k = bloodguy
int_k = 999
bool_k = false
obj_k[str_k2] = nicehide
obj_k[int_k2] = 222
obj_k[bool_k2] = true
obj_k[obj_k2][str_k3] = str
obj_k[obj_k2][int_k3] = 333
obj_k[obj_k2][bool_k3] = false
obj_k[obj_k2][arr_k3][0] = 1
obj_k[obj_k2][arr_k3][1] = arr_str
obj_k[obj_k2][arr_k3][2] = true obj_k[arr_k2][0] = 2
obj_k[arr_k2][1] = k2
obj_k[arr_k2][2][str_k_in_arr_k2] = sss
obj_k[arr_k2][2][int_k_in_arr_k2] = 136
friends[0][name] = nicehide
friends[0][gender] = unknown
friends[1][name] = nobody
friends[1][gender] = female
'개발일기 > JS' 카테고리의 다른 글
[JS] Javascript ES6 Class , extends 예시코드 (0) | 2022.02.21 |
---|---|
[JS] Javascript call , apply ,bind 예시 코드 (0) | 2022.02.21 |
[JS] ES6 제너레이터 알아보기. (0) | 2022.02.20 |
[JS] Javascript 모달창 상태에 따른 스크롤 막기, 풀기 (1) | 2022.02.20 |
[JS] FormData의 객체에 파일과 String데이터를 한번에 담는 방법 (0) | 2022.02.19 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 산안기 합격률
- 전기기사실기단답
- 게더타운맵
- 전기기사
- 전력공학
- 실기CBT
- KEC반영
- shortid
- 전기기사실기CBT
- 전기기기
- 산업안전기사
- 전기기사 필기
- 전기산업기사
- TypeScript
- React
- dummydata
- 모두CBT
- JavaScript
- 개더타운
- 전자기학
- zep
- 전기공사기사
- 산업안전기사 실기
- 게더타운
- 전기기사필기
- TS
- nextjs
- fakerjs
- gathertown
- cbt
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함