// 方式一 递归
function flat(array, newarray) {
for (var i = 0; i < array.length; i++) {
if(typeof array[i] == "number"){
//类型为number, 则放入到新数组中
newarray.push(array[i]);
} else {
//否则, 继续分解
flat(array[i], newarray);
}
}
}
var array = [1,[3,[4],[5,[6,7]],8],[9,[10]]];
var newarray = [];
flat(array, newarray);
// 方式二 toString(),但是条件受限
var array = [1,[3,[4],[5,[6,7]],8],[9,[10]]];
var newarray = array.toString().split(',');
// 方式三 使用es6的generator
var array = [1,[3,[4],[5,[6,7]],8],[9,[10]]];
function* iterTree(tree) {
if (Array.isArray(tree)) {
for(let i=0; i < tree.length; i++) {
yield* iterTree(tree[i]);
}
} else {
yield tree;
}
}
for(let x of iterTree(array)) {
console.log(x);
}
网友评论