mirror of
https://github.com/thangisme/notes.git
synced 2024-11-01 01:27:31 -04:00
24 lines
515 B
JavaScript
24 lines
515 B
JavaScript
|
module.exports = function flatten(list, depth) {
|
||
|
depth = (typeof depth == 'number') ? depth : Infinity;
|
||
|
|
||
|
if (!depth) {
|
||
|
if (Array.isArray(list)) {
|
||
|
return list.map(function(i) { return i; });
|
||
|
}
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
return _flatten(list, 1);
|
||
|
|
||
|
function _flatten(list, d) {
|
||
|
return list.reduce(function (acc, item) {
|
||
|
if (Array.isArray(item) && d < depth) {
|
||
|
return acc.concat(_flatten(item, d + 1));
|
||
|
}
|
||
|
else {
|
||
|
return acc.concat(item);
|
||
|
}
|
||
|
}, []);
|
||
|
}
|
||
|
};
|