重新映射json对象并将其推入单个数组

时间:2019-08-06 13:17:04

标签: javascript angular typescript

我正在重新映射从API接收到的JSON对象,该对象运行良好。问题在于,不是将其压入单个数组searchResultsReFormat中,而是在控制台中多次读取同一行,但使用不同的值。

  searchResultsReFormat: any = [];
  this.searchResults.map(result => {
                const customer  = result.customer
                const meals = result.meals
                const newResults = [{
                  firstName : customer.firstName,
                  lastName : customer.lastName,
                  grade: this.gradeName,
                  meals: [meals]
                }]
                console.log(newResults)
                this.searchResultsReFormat = newResults
              })

enter image description here

但是所有这些都应该分组在一个单独的数组searchResultsReFormat中,并且展开后,数据将显示

2 个答案:

答案 0 :(得分:2)

map实际上是根据提供的回调通过转换每个值返回新数组

您不需要推动或做任何事情,只需要:

  • 将地图结果分配给所需的值。
  • return在回调内转换后的值。

//此处分配

this.searchResultsReFormat = this.searchResults.map(result => {
  //                                                ^--- callback here
  const customer  = result.customer;
  const meals = result.meals;
  const newResults = [{
    firstName : customer.firstName,
    lastName : customer.lastName,
    grade: this.gradeName,
    meals: [meals]
  }];
  return newResults; // <-- return here.
});

答案 1 :(得分:1)

您需要返回map中的对象,并将map结果分配给所需的数组。

searchResultsReFormat: any = [];
  this.searchResultsReFormat = this.searchResults.map(result => {
                const customer  = result.customer
                const meals = result.meals
                return {
                  firstName : customer.firstName,
                  lastName : customer.lastName,
                  grade: this.gradeName,
                  meals: [meals]
                }                
              })