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]”方法