为了账号安全,请及时绑定邮箱和手机立即绑定

根据某些字段的值匹配2个数组

根据某些字段的值匹配2个数组

蛊毒传说 2023-03-24 13:55:47
我在名为myBar的数组中有以下成分列表。该成分包含在属性“名称”中myBar:  Array [  bar {    "category": "spirits",    "id": "1",    "ingredientId": "2003",    "name": "vodka",  },  bar {    "category": "juice",    "id": "2",    "ingredientId": "2017",    "name": "orange juice",  },  bar {    "category": "juice",    "id": "3",    "ingredientId": "2020",    "name": "lemon juice",  },  bar {    "category": "juice",    "id": "4",    "ingredientId": "2027",    "name": "Pineapple Juice",  },  bar {    "category": "juice",    "id": "5",    "ingredientId": "2018",    "name": "apple Juice",  },  bar {    "category": "juice",    "id": "6",    "ingredientId": "2025",    "name": "Lime Juice",  },  bar {    "category": "spirits",    "id": "7",    "ingredientId": "2001",    "name": "gin",  },  bar {    "category": "spirits",    "id": "8",    "ingredientId": "2005",    "name": "whiskey",  },  bar {    "category": "spirits",    "id": "9",    "ingredientId": "2002",    "name": "rum",  },]我还有一个名为cocktailList 的第二个数组,其中包含鸡尾酒配方列表。在这里,成分包含在“成分”字段中。cocktailList:  Array [Object {    "alcoholic": "true",        "drinkId": "1101",     "ingredients": " gin, lime syrup, lime",},Object {    "alcoholic": "true",        "drinkId": "1102",     "ingredients": "vodka, orange juice",},Object {    "alcoholic": "true",        "drinkId": "1103",     "ingredients": "rum, coke",},Object {    "alcoholic": "true",        "drinkId": "1104",     "ingredients": "sweet vermouth, campari, prosecco",},Object {    "alcoholic": "true",        "drinkId": "1105",     "ingredients": "Gin, Olive Juice, Olives, Dry vermouth",},Object {    "alcoholic": "true",        "drinkId": "1106",     "ingredients": " Vodka, Triple Sec, Lime Juice",},Object {    "alcoholic": "true",        "drinkId": "1107",     "ingredients": " vodka, Raspberry Liqueur, Pineapple Juice",}]我正在尝试根据配料的含量来检查我可以制作哪些鸡尾酒。这个想法是迭代每个食谱(在cocktailList中)并检查所有成分是否也是我在myBar中的成分列表的一部分。例如,“drinkId”:“1102”应该返回 true,因为我的myBar中有所有成分(伏特加和橙汁) ,而“drinkId”:“1101”应该返回 false,因为我既没有酸橙糖浆也没有酸橙。
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

从第一个数组创建一个成分名称数组,以便您可以快速搜索直接数组中的成分。


// arr1 is your list of ingredients in your bar.

var arrName  = [];

arr1.forEach(element => arrName.push(element.name));


console.log(arrName);

Output:

["vodka", "orange juice", "lemon juice", "Pineapple Juice", "apple Juice", "Lime Juice", "gin", "whiskey", "rum"]

现在遍历cocktailList并在 中搜索每种成分arrName。如果匹配元素的数量等于鸡尾酒中成分的数量,那么它就是一个匹配项。


var finalArr = arr2.filter(function(obj){

    var arrIngredient = obj.ingredients.split(',');

    var intMatch = 0;

    

    arrIngredient.forEach(element => arrName.indexOf(element.trim()) >= 0 ? intMatch++ : '');

    

    return arrIngredient.length == intMatch;

});


console.log(finalArr);

Output:

[

    {

         alcoholic: "true"

         drinkId: "1102"

         ingredients: "vodka, orange juice"

    }

]


查看完整回答
反对 回复 2023-03-24
  • 1 回答
  • 0 关注
  • 43 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信