我正在學習 js,我試圖根據我在陣列中的成分過濾食譜,但是用 Array.every() 完成的檢查似乎不起作用,我做錯了什么?這是代碼,謝謝大家!
const plates = [
{
name: "carbonara",
ingredients: ["eggs", "milk", "pepper", "pasta", "cheese"],
time: 30,
difficulty: "easy",
},
{
name: "oil_pepper",
ingredients: ["oil", "pepper", "pasta", "garlic"],
time: 20,
difficulty: "medium",
},
{
name: "tomato",
ingredients: ["pasta", "tomato", "garlic", "onion"],
time: "30",
difficulty: "hard",
},
];
const fridge = ["oil", "pepper", "pasta", "garlic"];
let filteredPlates = [];
const filter = () => {
plates.forEach((element) =>
fridge.forEach((element2) => {
if (
element.ingredients.every((element3) =>
element3.includes(element2.toString())
)
) {
filteredPlates.push(element);
return filteredPlates;
}
})
);
};
filter();
console.log(filteredPlates);
uj5u.com熱心網友回復:
你把問題復雜化了。您只需要檢查每個盤子,該盤子食譜中的每種成分是否都包含在冰箱中。您可以Array.filter
為此目的使用:
const plates = [
{
name: "carbonara",
ingredients: ["eggs", "milk", "pepper", "pasta", "cheese"],
time: 30,
difficulty: "easy",
},
{
name: "oil_pepper",
ingredients: ["oil", "pepper", "pasta", "garlic"],
time: 20,
difficulty: "medium",
},
{
name: "tomato",
ingredients: ["pasta", "tomato", "garlic", "onion"],
time: "30",
difficulty: "hard",
},
];
const fridge = ["oil", "pepper", "pasta", "garlic"];
const filteredPlates = plates
.filter(plt => plt.ingredients.every(ing => fridge.includes(ing)))
console.log(filteredPlates)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504511.html
標籤:javascript 数组 目的 筛选