Here you can find the source of flatten()
/*/*from w w w . ja v a 2 s . c o m*/ * flatten an array * author: StrayBugs */ // will return a new array and the origin remains unchanged Array.prototype.flatten = Array.prototype.flatten || function() { 'use strict'; var that = this; for (var i = 0; i < that.length; i += 1) { if (Array.isArray(that[i])) { that = that.concat.apply([], that); i -= 1; } } return that; }; // same as `flatten` Array.prototype.flatten1 = Array.prototype.flatten1 || function() { 'use strict'; var res = []; (function flatten(arr) { for (var i = 0; i < arr.length; i += 1) { if (Array.isArray(arr[i])) { flatten(arr[i]); } else { res.push(arr[i]); } } }(this)); return res; }; // will change the origin array Array.prototype.flatten2 = Array.prototype.flatten2 || function() { 'use strict'; for (var i = 0; i < this.length; i += 1) { if (Array.isArray(this[i])) { this.splice.apply(this, [i, 1].concat(this[i].flatten())); } } return this; }; var a = [1, 2, [3, 4, [5, 6]]]; console.log(a.flatten()); // [ 1, 2, 3, 4, 5, 6 ] console.log(a); // [ 1, 2, [ 3, 4, [ 5, 6 ] ] ] console.log(a.flatten1()); // [ 1, 2, 3, 4, 5, 6 ] console.log(a); // [ 1, 2, [ 3, 4, [ 5, 6 ] ] ] console.log(a.flatten2()); // [ 1, 2, 3, 4, 5, 6 ] console.log(a); // [ 1, 2, 3, 4, 5, 6 ]
Array.prototype.flatten = function() { return this.reduce(function(res, el) { if(el.constructor == Array) { el.forEach(function(sub_el) { res.push(sub_el); }) } else { res.push(el); return res; }, []);
Array.prototype.flatten = function () { var toReturn = []; for (var i = 0, len = this.length; i < len; i++) { if (this[i] instanceof Array) { toReturn = toReturn.concat(this[i].flatten()); } else { toReturn.push(this[i]); return toReturn; };
Array.prototype.flatten = function() { return this.reduce(function(a,b) { return a.concat(b) }, [])
Array.prototype.flatten = function(){ var flattenArray = []; for (var el in this) { var currElement = this[el]; if (Object.prototype.toString.call(currElement) === '[object Array]' ) { for (var i in currElement) { flattenArray.push(currElement[i]); } else { ...
var slice = Array.prototype.slice; Array.prototype.flatten = function () { var obj, result = []; for (var i = 0, l = this.length; i < l; ++i ) { obj = this[ i ]; if ( Array.isArray( obj ) ) { result = result.concat( obj.flatten() ); } else { result[ result.length ] = obj; ...
var arrays = [[1, 2, 3], [4, 5], [6]]; console.log(arrays.reduce(function(a, b){ return a.concat(b); })); Array.prototype.flatten = function(){ return this.reduce(function(a, b){ if(!Array.prototype.isPrototypeOf(a)) a = [a]; else ...
Array.prototype.flatten = function(array) { return this.reduce((prev, next) => prev.concat(next), []); };
Array.prototype.flatten = function (func) { var result = []; forEach(this, function (element) { forEach(func(element), function (child) { result.push(child); }); }); return result;
Array.prototype.flatten = function(nil){ result = new Array(); for(var i = 0; i < this.length; i++){ item = this[i]; if($.isArray(item)) for(var j = 0; j < item.length; j++) result.push(item[j]); else result.push(item); return result; }; ...