我正在尝试映射从第三方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;
};
有人可以注意到我的代码中有任何错误吗?或者不知道可能是什么问题?
谢谢!
答案 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
进行任何承诺。