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);
});
}