Javascript 将嵌套对象字段与Javasacript/Lodash中的数组列表进行比较

Javascript 将嵌套对象字段与Javasacript/Lodash中的数组列表进行比较,javascript,arrays,lodash,Javascript,Arrays,Lodash,我有以下两条数据: 用户: [ {id:1, food:{id:2, name:"coffee"} }, {id:2, food:{id:3, name:"tea" } }, {id:3, food:{id:5, name:"salad"} } ] 食物清单: [2,3] 我目前正在使用react,我需要过滤掉用户,只显示那些具有FoodList数组中食物id的用户 我在Lodash试过类似的东西: var filtered = _.some(users.food.id

我有以下两条数据:

用户:

[ 
   {id:1, food:{id:2, name:"coffee"} },
   {id:2, food:{id:3, name:"tea" } },
   {id:3, food:{id:5, name:"salad"} }
]
食物清单:

[2,3]
我目前正在使用react,我需要过滤掉用户,只显示那些具有FoodList数组中食物id的用户

我在Lodash试过类似的东西:

 var filtered = _.some(users.food.id, foodList);

这是不正确的,因为users.food.id无效。有没有一种方法可以将嵌套对象数组与javascript中的列表进行比较

您可以使用
Array.prototype.filter

const result = users.filter(e => foodList.includes(e.food.id));

您可以使用
Array.prototype.filter

const result = users.filter(e => foodList.includes(e.food.id));

这是一项简单的任务,无需任何库即可完成。您只需使用
filter()
indexOf()

var数据=[
{id:1,食物:{id:2,名字:“咖啡”},
{id:2,食物:{id:3,名字:“茶”},
{id:3,食物:{id:5,名字:“沙拉”}
]
var-arr=[2,3];
var result=data.filter(e=>arr.indexOf(e.food.id)!=-1)

console.log(result)
这是一项简单的任务,无需任何库即可完成。您只需使用
filter()
indexOf()

var数据=[
{id:1,食物:{id:2,名字:“咖啡”},
{id:2,食物:{id:3,名字:“茶”},
{id:3,食物:{id:5,名字:“沙拉”}
]
var-arr=[2,3];
var result=data.filter(e=>arr.indexOf(e.food.id)!=-1)
console.log(result)
您可以使用和从lodash获得

var users=[{id:1,食品:{id:2,名称:“咖啡”},{id:2,食品:{id:3,名称:“茶”},{id:3,食品:{id:5,名称:“沙拉”}],
食物列表=[2,3],
result=\.filter(用户,u=>\.includes(foodList,u.food.id));
控制台日志(结果)
您可以使用和使用lodash

var users=[{id:1,食品:{id:2,名称:“咖啡”},{id:2,食品:{id:3,名称:“茶”},{id:3,食品:{id:5,名称:“沙拉”}],
食物列表=[2,3],
result=\.filter(用户,u=>\.includes(foodList,u.food.id));
控制台日志(结果)

对于这个问题,有一个很好的简短的lodash解决方案,如果您已经在使用lodash,可以使用它

使用索引值,并使用以下方法仅提取
目录中的值:

var data=[{id:1,食物:{id:2,名字:“咖啡”},{id:2,食物:{id:3,名字:“茶”},{id:3,食物:{id:5,名字:“沙拉”}]
var foodList=[2,3];
var result=uz(数据)//启动链
.keyBy('id')//按键索引项
.at(foodList)//获取项目
.value();//返回结果数组
控制台日志(结果)

对于这个问题,有一个很好的简短的lodash解决方案,如果您已经在使用lodash,可以使用它

使用索引值,并使用以下方法仅提取
目录中的值:

var data=[{id:1,食物:{id:2,名字:“咖啡”},{id:2,食物:{id:3,名字:“茶”},{id:3,食物:{id:5,名字:“沙拉”}]
var foodList=[2,3];
var result=uz(数据)//启动链
.keyBy('id')//按键索引项
.at(foodList)//获取项目
.value();//返回结果数组
控制台日志(结果)