JavaScript で Array と Object がネストしたデータを展開したかった

以下のような Object が保持してる配列をいい感じに展開したかった。

元データ

const obj = [
    {
        name: "name1",
        children: [
            {
                name: "name2"
            },
            {
                name: "name3",
                children: [
                    {
                        name: "name4"
                    },
                    {
                        name: "name5"
                    },
                ]
            },
        ],
    },
    {
        name: "name6"
    }
]

結果

[
    { name: "name1", children[...] },
    { name: "name2" },
    { name: "name3", children[...] },
    { name: "name4" },
    { name: "name5" },
    { name: "name6" },
]

やってみた

function flattenBy(ary, key){
    return ary.concat(ary.map(data => flattenBy(data[key] || [], key)).reduce((r, v) => r.concat(v), []));
}


const obj = [
    {
        name: "name1",
        children: [
            {
                name: "name2"
            },
            {
                name: "name3",
                children: [
                    {
                        name: "name4"
                    },
                    {
                        name: "name5"
                    },
                ]
            },
        ],
    },
    {
        name: "name6"
    }
]


console.log(flattenBy(obj, "children"));

/*
output:
[
   { name: 'name1', children: [ [Object], [Object] ] },
   { name: 'name6' },
   { name: 'name2' },
   { name: 'name3', children: [ [Object], [Object] ] },
   { name: 'name4' },
   { name: 'name5' }
]
*/

結果の順番は特に指定はないのでこれでいいかなー。
標準に flatten がほしい