npm模块学习之arr-flatten
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)遍历结束,返回保存的数组。