npm模块学习之arr-flatten
发布于 6 年前 作者 sunfeng90 2455 次浏览 来自 分享

1、git地址

https://github.com/jonschlinkert/array-last

2、作用

递归的合并一个或者多个数组到一个新数组

3、例子和源码解析

3.1 例子

const flatten = require('arr-flatten');

console.log(flatten([1, 2, 3, 5, [[[[[8]]]]]])) // 输出:[ 1, 2, 3, 5, 8 ]

console.log(flatten([1, 2, 3, 5, [7]])) // 输出:[ 1, 2, 3, 5, 7 ]

console.log(flatten([1, 2, 3, 5, [null, [[[[[[[[10]]]]]]]]]])) // 输出:[ 1, 2, 3, 5, null, 10 ]

3.2 源码

module.exports = function (arr) {
  return flat(arr, []);
};

function flat(arr, res) {
  var i = 0, cur;
  var len = arr.length;
  for (; i < len; i++) {
    cur = arr[i];
    Array.isArray(cur) ? flat(cur, res) : res.push(cur);
  }
  return res;
}

3.3 源码解析

1)首先计算传入数组的长度;

2)接着遍历数组。如果数组的某个元素也是数组,那么递归遍历该元素。如果某个元素不是数组类型,那么保存该元素。

3)遍历结束,返回保存的数组。

回到顶部