Javascript 如何使用js映射格式化API响应数据?

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

我有一个JSON:

{
    "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}}}}
我理解。您是根据
名称进行筛选的。我希望我帮助您解决了问题。如果没有,请告诉我:)非常感谢您能帮助我解决问题