Skip to content

手写数组 flatern,考虑多层级

数组 flatern 的意思:[1,2,[3,4]] =>[1,2,3,4]

js
function flat(arr) {
  // 验证 arr 中,是否还有深层数组 [1,2,[3,4]]
  const isDeep = arr.some((item) => item instanceof Array);
  if (!isDeep) {
    return arr; // 已经是 flatern [1,2,3,4]
  }
  // 也可以使用 [].concat(1,2,[3,4]),但 apply 第二个参数可以接数组
  const res = Array.prototype.concat.apply([], arr);
  return flat(res); // 递归
}
// [1, 2, 3, 4, 5, 6, 7]
console.log(flat([1, 2, [3, 4, [5, 6]], 7]));

基于 MIT 许可发布