Skip to content

Instantly share code, notes, and snippets.

@yiyizym
Created February 17, 2017 00:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yiyizym/3a362473c2e82d74d94c634e73ff360f to your computer and use it in GitHub Desktop.
Save yiyizym/3a362473c2e82d74d94c634e73ff360f to your computer and use it in GitHub Desktop.
flatten array in javascript
var flatten = (function(){
var result = [];
var _innerFlatten = function(arr){
if(arr.length === 0){
return [];
}
arr.forEach(item => {
console.log(item)
console.log('>>>')
if(isArray(item)){
_innerFlatten(item);
}
else{
result.push(item);
}
})
return result;
}
function isArray(obj){
return Object.prototype.toString.call(obj).match(/Array/) != null;
}
return _innerFlatten;
})();
var arr = [1,[2],3,[4,[5]],[6,7,8],9];
console.log(arr);
var result = flatten(arr);
console.log(result);
@yiyizym
Copy link
Author

yiyizym commented Apr 28, 2017

另一个版本,使用 Array.prototype.reduce ,IE9 支持 :

const flatten = (arr) => {
  return arr.reduce((acc, val) => {
    return acc.concat(Array.isArray(val) ? flatten(val) : val)
  }, [])
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment