【发布时间】:2025-12-03 08:45:02
【问题描述】:
基本上,我试图找出从数组中选择一项的最简洁的方法,前提是所有某些值都存在。
const filterValues = ['blue', '30cm', 'true'];
const products = [
{
details: [
{ id: 1, value: 'red' },
{ id: 2, value: '30cm' },
{ id: 3, value: 'true' },
{ id: 4, value: '123432'}
],
name: "Product 1"
},
{
details: [
{ id: 5, value: 'blue' },
{ id: 6, value: '30cm' },
{ id: 7, value: 'true' },
{ id: 8, value: '98348'}
],
name: "Product 2"
},
{
details: [
{ id: 9, value: 'black' },
{ id: 10, value: '40cm' },
{ id: 11, value: 'false' },
{ id: 12, value: '578347'}
],
name: "Product 3"
},
]
只有产品 2 包含所有过滤器值,所以我想返回该产品。
我试过了:
products.filter(p => {
p.details.find(k => filterValues.includes(k.value));
})
但是如果任何值满足条件而不是所有值都包含,则返回。这是这里的主要问题。如果对象中仅存在数组中的所有这些值,我正在努力寻找一种过滤方法。
【问题讨论】:
-
那么你到底在挣扎什么?问题是什么?听起来像一个简单的
filter或find函数,使用一些逻辑运算符并知道how to access and process nested objects, arrays or JSON。 -
到目前为止你有什么尝试?
-
我记得当人们使用循环尝试这种东西时
-
@SebastianSimon 我添加了更多描述
-
假设您在使用 filter 方法时遇到了困难。为什么你没有走很长的路并用 if 条件 @tcurtis 编写一个循环?
标签: javascript ecmascript-6 lodash