reduce( ) JavaScript, (, , !). . .
:
var arr = [1, [2], [3, [[4]]]]
:
var flat = [1, 2, 3, 4]
for if.
, ( 4), for , if, ,
function flatten() {
var flat = [];
for (var i=0; i/ [1, 2, 3, 4]
, , . , . ( - i ).
reduce.
JavaScript . reduce( ). :
var flat = arr.reduce(function(done,curr){
return done.concat(curr);
}, []);
// [ 1, 2, 3, [ [ 4 ] ] ]
, ( ) . reduce ( ) - , .
Array.prototype.reduce()
reduce() (-), . (MDN)
, . reduce ( ) - . , . , , , . , . .
+ = . - , .
arr. done, . done , [] reduce( ). , curr ( current). ( .concat( ) ). .
reduce( ) .
, , . . : , . , .
, / .
- /:
- , .
- , .
- , . 2.
- , 3.
- .
- , , .
reduce( ) :
function flatten(arr) {
if (Array.isArray(arr)) {
return arr.reduce(function(done,curr){
return done.concat(flatten(curr));
}, []);
} else {
return arr;
}
}
// [ 1, 2, 3, 4 ]
.
. , . , , : ( ) ( ). (MDN)
, , flatten () . , , , . , , , , , . , , .
:
- function flatten(arr) { arr.
- if (Array.isArray(arr)) { .
- return arr.reduce(function(done,curr){ true reduce ( ) .
- return done.concat(flatten(curr)); ! , . : .
- }, []); reduce (done) , .
- } else { 2 false, .
- return arr; , arr ( ). , .
- } else.
- } .
! 24-, 4-- for 9- . Reduce , .
, . , , AI. .
+1 , .
. : ?.
, .
https://habrahabr.ru/post/330006/