【发布时间】:2021-05-24 05:40:05
【问题描述】:
chooseRecipe 函数应该将bakeryA 和bakeryB 中的数组与每个recipe 的ingredients 进行比较。如果bakeryA 和bakeryB 都有一个配方的成分,那么应该打印配方的名称。在这种情况下,应该打印Persian Cheesecake。但是,它一直返回一个空数组。
我知道我从一个空数组开始,但 suitableRecipe.push(recipes[i].name); 不应该处理这个问题吗?
不胜感激任何指导或建议,以更好地做到这一点。
let bakeryA = ['saffron', 'eggs', 'tomato paste', 'coconut', 'custard'];
let bakeryB = ['milk', 'butter', 'cream cheese'];
let recipes = [
{
name: 'Coconut Sponge Cake',
ingredients: ['coconut', 'cake base']
},
{
name: 'Persian Cheesecake',
ingredients: ['saffron', 'cream cheese']
},
{
name: 'Custard Surprise',
ingredients: ['custard', 'ground beef']
}
];
const chooseRecipe = function(bakeryA, bakeryB, recipes) {
let suitableRecipe = [];
for (let i = 0; i < recipes.length; i++) {
for (let j = 0; j < recipes[i].ingredients.length; j++) {
for (let k = 0; k < bakeryA.length; k++) {
if (bakeryA[k] === recipes[i].ingredients[j]) {
for (let l = 0; l < bakeryB.length; l++) {
for (let m = 0; m < recipes[i].ingredients; m++) {
if (bakeryB[l] === recipes[i].ingredients[m]) {
suitableRecipe.push(recipes[i].name);
}
}
}
}
}
}
}
return suitableRecipe;
}
console.log(chooseRecipe(bakeryA, bakeryB, recipes));
【问题讨论】:
-
for (let m = 0; m < recipes[i].ingredients; m++) {缺少.lengthforingredients吗? -
就是这样!太感谢了!不敢相信我错过了!
标签: javascript arrays for-loop object nested-loops