- 배열의 각 요소를 하나씩 순회하면서
- 콜백 함수가 반환한 값들로 새 배열을 만들어 반환합니다.
- 원본 배열은(보통) 그대로이고,
map()결과는 새 배열입니다.
형태:
array.map((element, index, array) => {
return 변환결과;
})
기본 예시 (당신 코드 설명)
$input.all().map(item => item.json)
$input.all(): 입력 아이템들의 배열item: 각 아이템item.json: 아이템 안의 json 데이터- 결과:
item.json들만 모인 배열
최종:
{
"data_object": {{ $input.all().map(item => item.json) }}
}
샘플 1) 특정 필드만 뽑기 (프로젝션)
입력 item.json이 이런 형태라고 가정:
{ "id": 10, "name": "kim", "age": 30 }
id와 name만 만들기:
$input.all().map(item => ({
id: item.json.id,
name: item.json.name,
}))
결과:
[
{ "id": 10, "name": "kim" },
{ "id": 11, "name": "lee" }
]
샘플 2) 값 가공(변환)하기
createdAt을 ISO 문자열로, name을 대문자로:
$input.all().map(item => ({
...item.json,
name: (item.json.name ?? '').toUpperCase(),
createdAt: new Date(item.json.createdAt).toISOString(),
}))
샘플 3) 조건에 따라 다른 값 넣기 (삼항 연산자)
score가 60 이상이면 pass:
$input.all().map(item => ({
...item.json,
result: item.json.score >= 60 ? 'pass' : 'fail',
}))
샘플 4) index(순번) 붙이기
$input.all().map((item, idx) => ({
index: idx + 1,
...item.json,
}))
샘플 5) 중첩 배열도 map()으로 변환
item.json.tags가 배열일 때:
$input.all().map(item => ({
...item.json,
tags: (item.json.tags ?? []).map(t => t.trim().toLowerCase()),
}))
샘플 6) map() + filter() 조합 (자주 씀)
※ map()은 “변환”, filter()는 “걸러내기”
score 60 이상만 남기고, 필요한 형태로 변환:
$input.all()
.filter(item => item.json.score >= 60)
.map(item => ({
id: item.json.id,
score: item.json.score,
}))
흔한 실수/주의점
map()에서return빼먹기
array.map(x => { x + 1 }) // undefined 배열이 됨 (중괄호면 return 필요)
array.map(x => x + 1) // OK
array.map(x => { return x + 1 }) // OK
- null/undefined 대비
(item.json.tags ?? []).map(...)
(item.json.name ?? '')
댓글
댓글 쓰기