数组的原生方法
arr.flat(Inifity); // Inifity 可以扁平化任意嵌套层数的数组
递归
function flat(arr) {
let flattenArr = [];
arr.forEach(item => {
if (Array.isArray(item)) {
flattenArr = flattenArr.concat(flat(item))
} else {
flattenArr.push(item);
}
})
return flattenArr;
}
非递归
function flat(arr) {
const flattenArr = [];
for(let i = 0;i<arr.length;i++) {
const stack = [];
if (Array.isArray(arr[i])) {
stack.push(arr[i]);
} else {
flattenArr.push(arr[i]);
}
while(stack.length) {
const newArr = stack.pop();
for(let i = 0;i<newArr.length;i++) {
if (Array.isArray(newArr[i])) {
stack.push(newArr[i]);
} else {
flattenArr.push(newArr[i]);
}
}
}
}
return flattenArr;
}