映射对象数组错误-javascript

时间:2020-07-04 09:51:52

标签: javascript arrays object array.prototype.map

我正在尝试映射从第三方api返回的对象数组以返回某些对象值,但是我的map函数存在一个错误,我无法弄清原因。我已经进行测试,以确保其余代码正常运行,这只是我似乎无法使用的一个map函数。

这是我当前的代码:

Name + " " + Name2 + " " + third_variable

返回:

async function displayRecipeCard(inputString) {
 
 const recipes = await getRecipeInfo(inputString); //fetches data from api and returns an object
 const recipeResults = recipes.results; // returns an array of objects

 const recipeCard = recipeResults.map(recipe => {
   return recipe.title; 
 });
};

现在,如果我写:

[[PromiseStatus]]: "resolved"
[[PromiseValue]]: undefined

它按预期返回第一个数组对象元素的标题:

async function displayRecipeCard(inputString) {
  const recipes = await getRecipeInfo(inputString);
  const recipeResults = await recipes.results;
  
  return recipeResults[0].title;
};

有人可以注意到我的代码中有任何错误吗?或者不知道可能是什么问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据您的发言,看来results是一个承诺。因此,您需要等待该承诺,然后map履行其承诺的阵列:

async function displayRecipeCard(inputString) {
    const recipes = await getRecipeInfo(inputString);
    //              ^^^^^−−−−− you'll want to double-check that this is necessary
    const recipeResults = await recipes.results;
    //                    ^^^^^−−−−− looks like you need this one though
   
    const recipeCard = recipeResults.map(({title}) => title); // Your original was fine, but this shows using destructuring if you like
} // Note: No `;` on function declarations

从根本上讲,您需要检查getReceiptInfo的文档(或实现)以确保其返回的内容,然后在进行await之前先map进行任何承诺。