Javascript 通过推送数组中的元素来创建新的对象数组

Javascript 通过推送数组中的元素来创建新的对象数组,javascript,arrays,Javascript,Arrays,我有一个对象数组,看起来像: const orderp = [{id: "1", items:[{id:"1", Name: "Peter"}, {id:"2", Name: "John"}]}, {id: "2", items:[{id:"1", Name: "Teresa"}, {id:"2", Name: &qu

我有一个对象数组,看起来像:

const orderp = [{id: "1", items:[{id:"1", Name: "Peter"}, {id:"2", Name: "John"}]}, {id: "2", items:[{id:"1", Name: "Teresa"}, {id:"2", Name: "stephan"}]}, {id: "3", items:[{id:"1", Name: "stuart"}, {id:"2", Name: "Jeny"}]}]
现在,我正在尝试创建一个组合数组,该数组将只包含
对象值

预期的产出将是:

const names = [{id:"1", Name: "Peter"}, {id:"2", Name: "John"},{id:"1", Name: "Teresa"}, {id:"2", Name: "stephan"}, {id:"1", Name: "stuart"}, {id:"2", Name: "Jeny"}]
为此,我尝试:

let names = []
for (order of orderp) {
  for(name of order['items']) {
    names.push(name)
}
}

使用数字迭代器还有一件事:

for(let i =0; i <= orderp.length-1; i ++){

}
for(设i=0;i可用于此目的,请参阅文档:

flatMap()
方法返回一个新数组,该数组是通过对数组的每个元素应用一个给定的回调函数,然后将结果展平一级而形成的。它与
map()
后接深度为1的
flat()
的数组相同,但比单独调用这两个方法效率略高

请尝试以下操作:

const order=[{id:“1”,items:[{id:“1”,Name:“Peter”},{id:“2”,items:[{id:“1”,Name:“Teresa”},{id:“2”,Name:“stephan”},{id:“1”,Name:“stuart”},{id:“2”,Name:“Jeny”}]
常量名称=orderpflatmap(e=>e.items)

console.log(names)
您可以使用reduce和内部回调使用concat将items数组与累加器数组合并

let数据=[{
id:“1”,
项目:[{
id:“1”,
姓名:“彼得”
}, {
id:“2”,
姓名:“约翰”
}]
}, {
id:“2”,
项目:[{
id:“1”,
姓名:“特蕾莎”
}, {
id:“2”,
姓名:“斯蒂芬”
}]
}, {
id:“3”,
项目:[{
id:“1”,
姓名:“斯图尔特”
}, {
id:“2”,
姓名:“珍妮”
}]
}];
const newData=data.reduce((acc,curr)=>{
返回附件(当前项目)
}, []);

console.log(newData)
也可以通过数组映射函数完成

const order p=[
{id:'1',项目:[{id:'1',名称:'Peter'},{id:'2',名称:'John'}},{id:'2',名称:'Teresa'},{id:'2',名称:'stephan'},{id:'1',名称:'stuart'},{id:'2',名称:'Jeny'}];
设arr=[];
订单地图((项目)=>{
如果(项目['items']){
if(Object.entries(item['items'].length>1)){
Object.entries(item['items']).map((item)=>{
到货推送(第[1]项);
});
}否则{
到货推送(第[1]项);
}
}
});

console.log(arr);
第一个代码段应该可以工作。您有任何错误吗?