我已經嘗試執行此功能兩天了,但沒有成功。我希望該函式回傳滿足過濾器陣列的物件。問題是我希望它只回傳滿足所有過濾器的物件。
我的過濾器陣列:
const myFiltersIngredients = ['farinha', 'frango']
我的物件陣列:
const myRecipes = [
{
name: 'torta da vovo',
ingredients: [
{
ingredient: 'farinha',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
},
{
ingredient: 'frango',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
}
]
},
{
name: 'biscoito',
ingredients: [
{
ingredient: 'farinha',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
},
{
ingredient: 'manteiga',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
}
]
}
]
uj5u.com熱心網友回復:
const myFiltersIngredients = ['farinha', 'frango'];
const myRecipes = [{
name: 'torta da vovo',
ingredients: [{
ingredient: 'farinha',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
},
{
ingredient: 'frango',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
}
]
},
{
name: 'biscoito',
ingredients: [{
ingredient: 'farinha',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
},
{
ingredient: 'manteiga',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
}
]
}
];
const myFiltered = myRecipes.filter(({
ingredients
}) => myFiltersIngredients.every(myfilter => ingredients.map(({
ingredient
}) => ingredient).includes(myfilter)));
console.log( myFiltered );
uj5u.com熱心網友回復:
我希望這個小演示可以幫助您指明正確的方向。
這是.filter和.every陣列方法檔案的鏈接。
作為簡要說明:
該.filter方法將一個函式作為引數,并將使用陣列中的每個物件執行該函式。該函式將回傳真或假。回傳的陣列.filter將是基于提供的函式回傳 true 的陣列中的所有項。
該.every方法將一個函式作為引數,如果陣列中的每一項在傳遞給函式引數時都將回傳 true,則回傳 true。
在我的代碼中,我首先宣告我要過濾所有食譜,并將過濾后的陣列回傳到一個變數中。作為引數傳遞的函式只有一行,它檢查物件以確保與該物件關聯的每個成分都包含在myFiltersIngredients 陣列中。
const myFiltersIngredients = ['farinha', 'frango'];
const myRecipes = [
{
name: 'torta da vovo',
ingredients: [
{
ingredient: 'farinha',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
},
{
ingredient: 'frango',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
}
]
},
{
name: 'biscoito',
ingredients: [
{
ingredient: 'farinha',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
},
{
ingredient: 'manteiga',
ingredientUnit: 'grama(s)',
ingredientQuantity: 500
}
]
}
];
const filteredRecipes = myRecipes.filter(o => {
return o.ingredients.every(
({ingredient}) => myFiltersIngredients.includes(ingredient)
);
});
console.log(filteredRecipes);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/384541.html
標籤:javascript 数组 目的 筛选
