我需要展平多维数组,但是我的代码仅展平一个数组然后停止。怎么了?我如何才能只传送没有数组的元素。

 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' ]

最佳答案

您做对了-只是缺少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']]]));

10-04 14:17