与えられた配列を深く平坦化できる関数を記述したいと思います。たとえば:Javascriptの深い平面多次元配列
deepFlatten([]); // []
deepFlatten([1, 2, 3]); // [1, 2, 3]
deepFlatten([[1, 2, 3], ["a", "b", "c"], [1, 2, 3]]); // [1, 2, 3, "a", "b", "c", 1, 2, 3]
deepFlatten([[3], [4], [5]], [9], [9], [8], [[1, 2, 3]]]); // [3, 4, 5, 9, 9, 8, 1, 2, 3]
私は再帰的にこの問題を解決しようとすると、これまでのところ、私はこれを持っている:
var deepFlatten = function (array){
var result = [];
array.forEach(function (elem) {
if (Array.isArray(elem)) {
result.concat(deepFlatten(elem)); // problem probably lies here
} else {
result.push(elem);
}
});
return result;
};
は、しかし、これは結果として、非配列要素をプッシュするだけで、完全に連結する部分を無視します。これを修正するにはどうすればよいですか、または外部ライブラリの助けを借りずにこの関数を書く方が良いでしょうか?