reduce
const flat = (arr) => {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flat(cur) : cur);
}, []);
}
console.log(flat([1, 2, [3, 4], [5, [6, 7]]]))
生成器函数
const flat = function* (arr) {
if (Array.isArray(arr)) {
for (let i = 0; i < arr.length; i++) {
yield* flat(arr[i]);
}
} else {
yield arr;
}
}
console.log([...flat([1, 2, [3, 4], [5, [6, 7]]])]);
循环
const flat = (arr) => {
const result = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
result.push(...flat(item));
} else {
result.push(item);
}
});
return result;
}
console.log(flat([1, 2, [3, 4], [5, [6, 7]]]));