Javascript 使用map将数组中的对象重新格式化为新元素数组

Javascript 使用map将数组中的对象重新格式化为新元素数组,javascript,arrays,angular,Javascript,Arrays,Angular,如何获取数组格式 0: mass: (2) [25, 50] name: "Tanks" __proto__: Object 1: mass: (2) [10, 15] name: "Car" __proto__: Object ---------- 通过this.cardList.map尝试解决方案 mass: (25) name: "Tanks" mass: (50) name: "Tanks" mass: (10) name: "Car" mass: (15) name:

如何获取数组格式

0:
mass: (2) [25, 50]
name: "Tanks"
__proto__: Object

1:
mass: (2) [10, 15]
name: "Car"
__proto__: Object


----------
通过this.cardList.map

尝试解决方案

mass: (25) 
name: "Tanks"

mass: (50)
name: "Tanks"

mass: (10)
name: "Car"

mass: (15)
name: "Car"

下面是一个使用
map
和:

const cardList=[
{质量:[25,50],名称:'坦克'},
{质量:[10,15],名称:'Car'}
];
const out=cardList.reduce((acc,c)=>{
//分解体量和名称
//从当前对象
常数{mass,name}=c;
//通过映射创建新的对象数组
//在体量阵列上,并为每个阵列创建一个新对象
常量temp=mass.map((n)=>({mass:n,name}));
//展开新的阵列并使其呈凹状
//到蓄能器
根据混凝土温度(…温度)返回;
}, []);

控制台。注销
您可以
映射所需对象,然后通过
flatMap
方法展开数据:

const arr=[
{质量:[25,50],名称:“坦克”},
{mass:[10,15],名字:“Car”}
];
const result=arr.flatMap(a=>a.mass.map(s=>({mass:s,name:a.name}));
控制台日志(结果)
let list=[
{'mass':[25,50],'name':'Tanks'},
{'mass':[10,15],'name':'Car'}
];
让result=list.reduce((acc,o)=>(acc.push(…[…o.mass.map(v=>({'mass':v,'name':o.name}))),acc),[];

控制台日志(结果)既然您用Angular标记了它,我假设您使用rxjs的Observables。我认为您可以使用可管道操作符,例如,以及和的JavaScript操作符

getCardList(){
返回此文件。http
.得到
(后端IP+卡列表)。管道(
映射(结果=>{
//为@Harish借用的转换例程
const newArray=result.map(({mass,name})=>{
返回mass.map(m=>({mass:m,name}))
}).flat()
返回新数组;
}
)
.订阅(数据=>{
控制台日志(数据);
});
}

我还从
subscribe()中取出了您的报税表
因为订阅不需要返回。我还从该方法返回了可观测值,而不是
this.cardlist
;因为在异步服务返回结果之前,将从该方法返回一个空数组(或未初始化的值)。

这是什么
0:mass
?我认为可以使用
flat
函数,这是文档-我不知道如何将现有数组拆分为多个数组
mass: (25) 
name: "Tanks"

mass: (50)
name: "Tanks"

mass: (10)
name: "Car"

mass: (15)
name: "Car"
  let cardList = [{mass: [25,50], name: 'tank'}, {mass: [10,15], name: 'Car'}]  

    const res =  cardList.map(({mass, name})=> {
        return mass.map(m => ({mass: m, name}))
    }).flat()
    console.log(res)
getCardList() {
    return this.http
      .get<CardList>
      (BACKEND_IP + CARD_LIST).pipe(
       map(result => {
          // conversion routine borrowed for @Harish
          const newArray =  result.map(({mass, name})=> {
              return mass.map(m => ({mass: m, name}))
          }).flat()
         return newArray;
        }
      )
      .subscribe(data => {
        console.log(data);
      });
  }