美文网首页
flat简单实现 - 茴字有4种写法 😁

flat简单实现 - 茴字有4种写法 😁

作者: peerben | 来源:发表于2018-08-09 09:35 被阅读25次
function *flat(array) {
  for (const item of array) {
    if (Array.isArray(item)) {
      yield* flatMap(item);
    }else {
      yield item;
    }
  }
}

function flat2(arr) {
  const res = [];
  const fmFunc = function(array) {
    for (const item of array) {
      if (Array.isArray(item)) {
        fmFunc(item);
      } else {
        res.push(item);
      }
    }
  }
  fmFunc(arr);
  return res;
}

function flat3(arr) {
  return arr.reduce((prev, cur) => {
    if (Array.isArray(cur)) {
      return prev.concat(flat3(cur));
    } else {
      return prev.concat(cur);
    }
  }, [])
}

function flat4(arr) {
  const res = [];
  const stack = arr.reverse().slice();

  while (stack.length > 0) {
    const top = stack.pop();
    if (Array.isArray(top)) {
      stack.push(...top.reverse());
    } else {
      res.push(top);
    }
  }
  return res;
}


const darr = [[1, 2, 3], [4], [6, [7, 8, 9]]];

const farr = [...flat(darr)];
console.log(`flatArr ${farr}`);

const farr2 = flat2(darr);
console.log(`flatArr2 ${farr2}`);

const farr3 = flat3(darr);
console.log(`flatArr3 ${farr3}`);

const farr4 = flat4(darr);
console.log(`flatArr4 ${farr4}`);

相关文章

网友评论

      本文标题:flat简单实现 - 茴字有4种写法 😁

      本文链接:https://www.haomeiwen.com/subject/vecqbftx.html