중첩된 배열을 가져와 중첩 없이 배열에 있는 모든 요소가 포함된 배열을 반환하는 JavaScript 배열 함수를 작성해야 합니다.
예를 들어 -
//if the input is: const arr = [[1, 2, 3], [4, 5], [6]]; //then the output should be: const output = [1, 2, 3, 4, 5, 6];
따라서 이 함수의 코드를 작성해 보겠습니다 -
방법 1:재귀 사용
여기에서 원래의 중첩 배열을 반복하고 중첩된 요소 요소를 새 배열로 재귀적으로 푸시합니다.
예시
const arr = [[1, 2, 3], [4, 5], [6]]; const flatten = function(){ let res = []; for(let i = 0; i < this.length; i++){ if(Array.isArray(this[i])){ res.push(...this[i].flatten()); } else { res.push(this[i]); }; }; return res; }; Array.prototype.flatten = flatten; console.log(arr.flatten());
방법 2:Array.prototype.reduce() 사용
여기서 우리는 다음과 같은 새로운 배열을 생성하기 위해 reduce() 메소드를 사용할 것입니다 -
예시
const arr = [[1, 2, 3], [4, 5], [6]]; const flatten = function(){ return this.reduce((acc, val) => { return acc.concat(...val); }, []); }; Array.prototype.flatten = flatten; console.log(arr.flatten());
출력
두 방법 모두에 대한 콘솔 출력은 -
[ 1, 2, 3, 4, 5, 6 ]