문제
Nested array를 flatten하라
내가 푼 답
function steamrollArray(arr) { var flat = (arr) => arr.flat(); while(true) { if(arr.filter(i => Array.isArray(i)).length === 0) { break; } arr = flat(arr); } return arr; }
Intermediate Solution
function steamrollArray(arr) { let flat = [].concat(...arr); return flat.some(Array.isArray) ? steamrollArray(flat) : flat; }
나는 flat 메소드를 쓴 반면, 솔루션에서는 spread operator를 사용하여 flat을 했다. 그리고 나는 while을 사용해서 loop를 돌렸지만 솔루션에서는 재귀와 some 메소드를 사용했다.
Array.some(Array.isArray)
가 탈출 조건이 된 셈(나는 필터를 썼지만)이고 탈출 조건이 충족될 때까지 자기자신을 계속 호출했다.