Javascript 如何使用js映射格式化API响应数据?
我有一个JSON:Javascript 如何使用js映射格式化API响应数据?,javascript,reactjs,vue.js,Javascript,Reactjs,Vue.js,我有一个JSON: { "result": [{ "name": "a", "value": 20, "max": 100, "sale_value": [{ "no": 1, "name": "aaaaa", "price": 200 }, { "no": 2, "name": "bbbb
{
"result": [{
"name": "a",
"value": 20,
"max": 100,
"sale_value": [{
"no": 1,
"name": "aaaaa",
"price": 200
}, {
"no": 2,
"name": "bbbb",
"price": 300
}]
}, {
"name": "b",
"value": 10,
"max": 100,
"sale_value": [{
"no": 1,
"name": "ccccc",
"price": 200
}, {
"no": 2,
"name": "dddd",
"price": 300
}]
}]
}
我在API响应中得到了它,我可以映射:
data: [
{
name:'a',
value: 20,
max: 100
}
]
如何映射销售价值
[
{
name: 'a',
value: 20,
max: 100,
sale_value: [{ no: 1, name: 'aaaaa', price: 200 }],
},
]
这是我的代码:
axios.all([axios.get("http://127.0.0.1:3000/test")]).then(
axios.spread(resSale => {
this.sales = resSale.data.result.map((data, i) => {
return {
name: data.name,
value: data.value,
max: data.max,
sale_value: [
{
no: data.sale_value[i].no,
name: data.sale_value[i].name,
price: data.sale_value[i].price
}
]
};
});
console.log(this.sales);
})
);
您还需要将
映射到sale\u value
上,因为它也是一个数组,您希望将其包含在格式化数据中。此外,对数据进行格式化似乎并不重要,因为您不会对其属性或键进行任何更改:
const数据={
结果:[
{
名称:‘a’,
价值:20,
最高:100,
销售价值:[
{
否:1,,
名称:“AAAA”,
价格:200,,
},
{
否:2,,
名称:“bbbb”,
价格:300,,
},
],
},
{
名称:‘b’,
数值:10,
最高:100,
销售价值:[
{
否:1,,
名称:“ccccc”,
价格:200,,
},
{
否:2,,
名称:‘dddd’,
价格:300,,
},
],
},
],
}
const data=data.result.map((数据,i)=>{
返回{
name:data.name,
value:data.value,
max:data.max,
sale\u value:data.sale\u value.map(saleItem=>{
返回{
编号:saleItem.no,
名称:saleItem.name,
价格:saleItem.price,
}
}),
}
})
console.log(data)
您可以在result调用的map函数中调用map方法on sale\u值。这似乎是一个非常做作的例子,如果你提供了更多关于你想要实现的内容的上下文,这将更容易帮助你。@Josh如果我能得到它,我将在网站上展示它。在你的例子中,你没有以任何方式操纵数据,因此没有迹象表明你是否需要映射。你可以用this.sales=resSale.data.result
@Josh我得到this.$route.params.name
,然后我检查this.$route.params.name===this.sales.name
我会映射并得到值sales name=params.name抱歉,如果你不能理解,谢谢你,我需要映射它,因为如果我得到这个。$route.params.name,我会检查这个。$route.params.name===this.sales.name,我会映射并获取值sales name=params.name如果你不理解axios.all([axios.get('http://127.0.0.1:3000/test然后(axios.spread((resSale)=>{this.sales=resSale.data.result for(设i=0;i{return no:saleItem.no,name:saleItem.name,price:saleItem.price}}}}
我理解。您是根据名称进行筛选的。我希望我帮助您解决了问题。如果没有,请告诉我:)非常感谢您能帮助我解决问题