javascript - 如何检查用户输入数组是否等于特定对象?

标签 javascript arrays

我有一个存储用户输入的数组,我有一些对象需要特定的值为真。用户输入必须与每个对象中的成分相匹配。

var recipes = [
{
    'name': 'Omelette',
    'ingredients': [
        "Eggs",
        "Mushrooms",
        "Peppers",
        "Onions"
    ]
},
{
    'name': 'Spaghetti',
    'ingredients': [
        "Pasta",
        "Tomato",
        "Meat Balls"
    ]
};

var storedIngredients = [];
//This is the array that stores user input.
//I used this is so far but it's hardcoded and I don't want hardcode

if (storedIngredients.includes('Pasta','Tomato','Meat Balls') {
console.log(recipes.name[0];);
};

我需要一种方法,如果用户输入相应的配料,他将被显示他有制作意大利面条的配料。

最佳答案

您可以在数组上使用过滤器来查找用户具有其成分的食谱列表。

var recipes = [
{
    'name': 'Omelette',
    'ingredients': [
        "Eggs",
        "Mushrooms",
        "Peppers",
        "Onions"
    ]
},
{
    'name': 'Spaghetti',
    'ingredients': [
        "Pasta",
        "Tomato",
        "Meat Balls"
    ]
}];

var storedIngredients = ["Pasta",
        "Tomato",
        "Meat Balls",
        "Onions"];

var match = recipes.filter(x => x.ingredients.every(e => storedIngredients.some(s => s === e)));

console.log(match);

关于javascript - 如何检查用户输入数组是否等于特定对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52366690/

相关文章:

arrays - 使用 dataweave 重命名和删除同一数组中的属性

c - 为全局多维数组分配内存

javascript - Facebook 登录无法使用适用于 iOS 的应用内浏览器

arrays - 按值对 map 排序,然后将其放入GO中的另一张 map 中

java - 是否可以将数组中的索引与颜色进行比较?

javascript - 为什么我的可搜索过滤列表不起作用?

javascript - Laravel 5/VueJS : Route for Get request route return Object or Array depending Eloquent query

javascript - 为什么带有 ng-if 的 div 会阻止其兄弟运行 Angular?

javascript - GoJS:在转换函数中使用多个参数

javascript - Angular 6 - 外部化 url