Javascript 如何展平嵌套数组?

Javascript 如何展平嵌套数组?,javascript,Javascript,如何展平阵列中的嵌套阵列 下面是示例输入数组 const input = [ { id: 1, name: 'Charles', otherFields: [{ id: 2, name: 'Pung', }, { id: 3, name: 'James', }] }, { id: 4, name: 'Charles', otherFields: [{ id: 5,

如何展平阵列中的嵌套阵列

下面是示例输入数组

const input = [
{
   id: 1,
   name: 'Charles',
   otherFields: [{
       id: 2,
       name: 'Pung',
   }, {
       id: 3,
       name: 'James',
   }]
}, {
   id: 4,
   name: 'Charles',
   otherFields: [{
       id: 5,
       name: 'Pung',
   }, {
       id: 6,
       name: 'James',
   }]
}

]
我想要得到的输出数组

[{
   id: 1,
   name: 'Charles'
}, {
   id: 2,
   name: 'Pung',
}, {
   id: 3,
   name: 'James',
}, {
   id: 4,
   name: 'Charles'
}, {
   id: 5,
   name: 'Pung',
}, {
   id: 6,
   name: 'James',
}]

我想以某种方式在一个语句中得到输出,比如

input.map((sth) => ({...sth??, sth.field...})); // I'm not sure :(
使用,您可以取出
otherFields
属性,并返回包含父项和其他数组的数组:

const输入=[{
id:1,
姓名:'查尔斯',
其他字段:[{
id:2,
姓名:"朋克",,
}, {
id:3,
姓名:“詹姆斯”,
}]
}];
console.log(
input.flatMap(({otherFields,…item})=>[item,…otherFields])

);对于多个级别,可以采用递归的扁平化方法

const
平面=({otherFields=[],…o})=>[o,…otherFields.flatMap(平面)],
input=[{id:1,名称:'Charles',其他字段:[{id:2,名称:'Pung'},{id:3,名称:'James',其他字段:[{id:4,名称:'Jane'}]}],
结果=输入。平面图(平面);
控制台日志(结果)

作为控制台包装{max height:100%!important;top:0;}
嵌套有多深?一度深,如示例超级棒的答案所示。谢谢。如果我想将
名称
映射到>
自定义名称
,那么该怎么办?为了便于阅读,我想您应该将其分离到一行。之后映射数组:
.flatMap(…).Map({id,name})=>({id,custom_name:name}))
你也可以在一个
.flatMap
中完成,但我认为它看起来有点糟糕,太多了!idk为什么人们否决了我的问题?答案很好:我得到了一个TS错误:“MyType | undefined”必须有一个返回迭代器的“[Symbol.iterator]”方法。我得到了这个TS错误:“MyType | undefined”必须有一个返回迭代器的“[Symbol.iterator]”方法