Node.js 映射数组的数组?

Node.js 映射数组的数组?,node.js,Node.js,我有一个疯狂的数组,看起来像这样: const data = [ [{ Name: 'Name 1', Block: [{Id: "1"}, {Id: "2"}] }], [{ Name: 'Name 2', Block: [{Id: "3"}, {Id: "4"}] }], ] [ { Id: '1' }, { Id: '2' }, { Id: '3' }, { Id: '4' } ] 我想将块映射到单个数组,如下所示: const data =

我有一个疯狂的数组,看起来像这样:

const data = [
     [{ Name: 'Name 1', Block: [{Id: "1"}, {Id: "2"}] }],
     [{ Name: 'Name 2', Block: [{Id: "3"}, {Id: "4"}] }],
]
[  { Id: '1' },
   { Id: '2' },
   { Id: '3' }, 
   { Id: '4' }
]
我想将
映射到单个数组,如下所示:

const data = [
     [{ Name: 'Name 1', Block: [{Id: "1"}, {Id: "2"}] }],
     [{ Name: 'Name 2', Block: [{Id: "3"}, {Id: "4"}] }],
]
[  { Id: '1' },
   { Id: '2' },
   { Id: '3' }, 
   { Id: '4' }
]
我试过这样做:

const data = [
     [{ Name: 'Name 1', Block: [{Id: "1"}, {Id: "2"}] }],
     [{ Name: 'Name 2', Block: [{Id: "3"}, {Id: "4"}] }],
]
[  { Id: '1' },
   { Id: '2' },
   { Id: '3' }, 
   { Id: '4' }
]
const数据=[
[{Name:'Name 1',块:[{Id:'1},{Id:'2}]}],
[{Name:'Name 2',块:[{Id:'3},{Id:'4}]}],
]
const idList=data.map(blockData=>{
返回块数据[0]。块;
});

console.log(idList)
.map
将为旧数组的每个索引创建一个新项。如果您的输入数组有2个项目,那么输出数组也将只有2个项目-但您需要4个项目,因此
.map
无法工作。改用
flatMap
展平:

const数据=[
[{Name:'Name 1',块:[{Id:'1},{Id:'2}]}],
[{Name:'Name 2',块:[{Id:'3},{Id:'4}]}],
];
const idList=data.flatMap(([{Block}])=>Block);

console.log(idList)
.map
将为旧数组的每个索引创建一个新项。如果您的输入数组有2个项目,那么输出数组也将只有2个项目-但您需要4个项目,因此
.map
无法工作。改用
flatMap
展平:

const数据=[
[{Name:'Name 1',块:[{Id:'1},{Id:'2}]}],
[{Name:'Name 2',块:[{Id:'3},{Id:'4}]}],
];
const idList=data.flatMap(([{Block}])=>Block);

console.log(idList)
您的数据是数组中的一个数组,因此您应该使用map两次,但这将为您提供一个包含2个元素的数组。现在您需要减少或展平结果数组以获得所需的输出

data.map(a=>{return a[0].Block.map(b=>{ return b})}).reduce((o, m) => [...m, ...o], [])

您的数据是数组中的一个数组,因此您应该使用map两次,但这将为您提供一个包含2个元素的数组。现在,您需要减少或展平生成的数组以获得所需的输出

data.map(a=>{return a[0].Block.map(b=>{ return b})}).reduce((o, m) => [...m, ...o], [])

最简洁的方法是使用reduce语句:

const reducer = (a, b) => a.concat(b[0].Block);
const idList = data.reduce(reducer, []);

通过这种方式,您可以更清楚地了解您要做的事情。

最简洁的方法是使用reduce语句:

const reducer = (a, b) => a.concat(b[0].Block);
const idList = data.reduce(reducer, []);
这样,你将更清楚地知道你在做什么