簡體   English   中英

如何過濾嵌套對象數組 Javascript

[英]How to filter an Array of nested objects Javascript

我有一個食譜數組,在它里面我有另一個帶有一些對象的數組成分,我想要的是通過將嵌套的 object 關鍵成分與輸入字段中輸入的值進行比較來過濾食譜數組(keyup 事件正在工作,我有這些值形成存儲在名為enteredValue的變量中的輸入字段)...

那么你能幫我找到如何使用那些嵌套數組過濾食譜

 const recipes = [{ "id": 1, "name": "Limonade de Coco", "servings": 1, "ingredients": [{ "ingredient": "Lait de coco", "quantity": 400, "unit": "ml" }, { "ingredient": "Jus de citron", "quantity": 2 } ], "time": 10, "description": "Mettre les glaçons à votre goût dans le blender, ajouter le lait, la crème de coco, le jus de 2 citrons et le sucre. Mixer jusqu'à avoir la consistence désirée", "appliance": "Blender", "ustensils": ["cuillère à Soupe", "verres", "presse citron"] }, { "id": 2, "name": "Poisson Cru à la tahitienne", "servings": 2, "ingredients": [{ "ingredient": "Thon Rouge (ou blanc)", "quantity": 200, "unit": "grammes" }, { "ingredient": "Concombre", "quantity": 1 }, { "ingredient": "Tomate", "quantity": 2 }, { "ingredient": "Lait de Coco", "quantity": 100, "unit": "ml" } ], "time": 60, "description": "Découper le thon en dés, mettre dans un plat et recouvrir de jus de citron vert (mieux vaut prendre un plat large et peu profond). Laisser reposer au réfrigérateur au moins 2 heures. (Si possible faites-le le soir pour le lendemain. Après avoir laissé mariner le poisson, coupez le concombre en fines rondelles sans la peau et les tomates en prenant soin de retirer les pépins. Rayer la carotte. Ajouter les légumes au poissons avec le citron cette fois ci dans un Saladier. Ajouter le lait de coco. Pour ajouter un peu plus de saveur vous pouver ajouter 1 à 2 cuillères à soupe de Crème de coco", "appliance": "Saladier", "ustensils": ["presse citron"] } ] let filteredRecettesIngrediants = recipes.map(receipt => { return receipt.ingredients.filter(ingredientKey => { return (ingredientKey.ingredient === 'Carotte') }) }) console.log(filteredRecettesIngrediants)

如果您想獲取包含輸入成分的每個食譜,請嘗試以下操作:

recipes.filter(r => r.ingredients.some(i => i.ingredient === enteredValue));

這將獲取recipes中的所有項目,其中至少一項ingredientsingredient值等於輸入的enteredValue

recipes.filter(recipe => recipe.ingredients.some(ingred => ingred.ingredient == inputValue))

如果至少一個條目滿足給定的 function,則some方法返回 true,在這種情況下,配方中每種成分的"ingredient"值的值為inputValue 如果至少有一個條目返回 true,則配方包含該成分,因此您可以將整個配方添加到過濾后的 output 列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM