JavaScript에서 객체를 담고 있는 중첩 배열(nested array)을 하나의 일반 배열로 변환해야 하는 경우가 종종 있습니다. 이럴 때 flat() 메서드를 사용하면 아주 간단하게 해결할 수 있습니다.
중첩 배열 예시
다음과 같이 배열 안에 배열이 포함된 중첩 배열이 있다고 가정해 보겠습니다.
const arrayObject = [
[
{
Name: "John"
},
{
countryName: "US"
}
],
[
{
subjectName: "JavaScript"
},
{
teacherName: "Mike"
}
]
];
flat() 메서드로 변환하기
flat() 메서드는 중첩된 배열 구조를 지정한 깊이만큼 평탄화(flattening)하여 새로운 배열을 반환합니다. 기본값은 1단계이며, 아래 코드와 같이 사용하면 됩니다.
const arrayObject = [
[
{
Name: "John"
},
{
countryName: "US"
}
],
[
{
subjectName: "JavaScript"
},
{
teacherName: "Mike"
}
]
];
const output = arrayObject.flat();
console.log(output);
프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다. 여기서는 파일 이름을 demo50.js로 저장했다고 가정합니다.
node fileName.js
실행 결과
코드를 실행하면 다음과 같이 중첩 배열이 하나의 일차원 배열로 평탄화되어 출력됩니다.
PS C:\Users\Amit\JavaScript-code> node demo50.js
[
{ Name: 'John' },
{ countryName: 'US' },
{ subjectName: 'JavaScript' },
{ teacherName: 'Mike' }
]
참고: 다단계 중첩 배열 처리하기
배열이 여러 단계로 중첩되어 있다면 flat() 메서드에 원하는 깊이를 숫자로 전달하거나, Infinity를 인자로 넘겨 모든 단계를 한 번에 평탄화할 수 있습니다.
const deepNested = [1, [2, [3, [4]]]]; console.log(deepNested.flat(Infinity)); // [1, 2, 3, 4]