let arr = [1, [2, [3, [4, 5]]], 6];
// 方法1.flat( Infinity ) 任意の入れ子レベルの配列を展開する。
let arr1 = arr.flat(Infinity);
console.log(arr1);
// 方法2 レギュラー
let arrStr = JSON.stringify(arr);
let reg = /(\[|\])/g;
let arr2 = arrStr.replace(reg, "").split(",").map(Number);
console.log(arr2);
// 方法3:再帰的アプローチ
let arr3 = [];
function flat(arr) {
arr.forEach((ele) => {
if (ele instanceof Array) {
flat(ele);
} else {
arr3.push(ele);
}
});
}
flat(arr);
console.log(arr3);
// 方法4:reduce
function flat(arr) {
return arr.reduce((temp, curr) => {
return temp.concat(Array.isArray(curr) ? flat(curr) : curr);
}, []);
}
console.log(flat(arr));
//方法5... と連結する。
while (arr.some(Array.isArray)) {
arr = [].concat(...arr);
}