gpt4 book ai didi

javascript - 针对多个值过滤对象,仅返回完美匹配

转载 作者:行者123 更新时间:2023-12-01 00:32:32 25 4
gpt4 key购买 nike

我有一组配方对象,每个对象都包含一个带有值数组的 ingredients 键 - 如下所示:

'soup': {'ingredients': ['carrot', 'pepper', 'tomato']}, 
'pie': {'ingredients': ['carrot', 'steak', 'potato']},
'stew': {'ingredients': ['steak', 'pepper', 'tomato']}

对于每个菜谱,我想获取一个值数组并查询ingredients 数组 - 仅返回与所有值匹配的菜谱。

例如:

var shoppingList = ['carrot', 'steak', 'tomato', 'pepper']

// returns: soup, stew

我尝试使用Array.prototype.filter(),它返回包含任何查询值的对象。但我只需要返回包含所有值的对象。

换句话说,如果我没有土 bean ,就不要告诉我我可以做馅饼。

数据最初来自 Firebase 查询,但据我所知,不可能使用 Firebase 执行此服务器端操作。

提前致谢。

最佳答案

  1. 使用 Object.entries 从对象中提取键值对
  2. 使用 Array#every 过滤掉 shoppingList 中不包含所有成分的产品和 Array#includes .
  3. 使用Array.map只获取 key 。

var recipes = {
'soup': {'ingredients': ['carrot', 'pepper', 'tomato']},
'pie': {'ingredients': ['carrot', 'steak', 'potato']},
'stew': {'ingredients': ['steak', 'pepper', 'tomato']}
};

var shoppingList = ['carrot', 'steak', 'tomato', 'pepper']

var result = Object.entries(recipes)//1. get the key-value pairs
.filter(([key, {ingredients}]) => ingredients.every(t => shoppingList.includes(t))) //2. filter them
.map(([key]) => key) //3. get the keys only

console.log(result);

关于javascript - 针对多个值过滤对象,仅返回完美匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com