数组扁平化

2020-07-24  本文已影响0人  zhulichao
// 方式一 递归
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);
}
上一篇下一篇

猜你喜欢

热点阅读