-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


[ ] Array.prototype.reduce()

, 01 2017 . 17:25 +
reduce( ) JavaScript, (, , !). . .
image

:

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 ( ) - . , . , , , . , . .
image
+ = . - , .

arr. done, . done , [] reduce( ). , curr ( current). ( .concat( ) ). .

reduce( ) .


, , . . : , . , .

image
, / .

- /:

  1. , .
  2. , .
  3. , . 2.
  4. , 3.
  5. .
  6. , , .

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 () . , , , . , , , , , . , , .

:

  1. function flatten(arr) { arr.
  2. if (Array.isArray(arr)) { .
  3. return arr.reduce(function(done,curr){ true reduce ( ) .
  4. return done.concat(flatten(curr)); ! , . : .
  5. }, []); reduce (done) , .
  6. } else { 2 false, .
  7. return arr; , arr ( ). , .
  8. } else.
  9. } .

! 24-, 4-- for 9- . Reduce , .

, . , , AI. .
image
+1 , .



. : ?.

, .

Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/330006/

:  

: [1] []
 

:
: 

: ( )

:

  URL