2015-07-01 3 views
1

Мне нужно сгладить многомерные массивы, но мой код только сглаживает один массив, а затем останавливается. Что не так? Как получить его только для переноса элементов без массивов.Сглаживание многомерных массивов в javascript

function flatten(arr) { 
    // I'm a steamroller, baby 
    arr.reduce(function (flat, toFlatten) { 
     return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten); 
    },[]); 
    } 
    flatten([[['a']], [['b']]]); 

assert.deepEqual(flatten([[['a']], [['b']]]), ['a', 'b'], 'should flatten nested arrays'); 

should flatten nested arrays: expected [ [ 'a' ], [ 'b' ] ] to deeply equal [ 'a', 'b' ] 
+0

возможно дубликат [Merge/расплющить массив Массивы в JavaScript?] (Http://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript) –

ответ

1

Вы делаете это правильно - просто отсутствует заявление return.

function flatten(arr) { 
    // I'm a steamroller, baby 
    return arr.reduce(function (flat, toFlatten) { 
     return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten); 
    }, []); 
} 

console.log(flatten([[['a']], [['b']]]));