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, []);
这样,你将更清楚地知道你在做什么