javascript - JS中根据动态对象和值过滤数组
问题描述
我有一个包含不同对象列表的数组,我希望能够重复使用相同的函数来过滤同一数组中的不同对象和值。
我的阵列
cocktailList = [
Object {
"abv": "24",
"alcoholic": "true",
"strength": "medium",
"type": Object {
"key": 3,
"label": "Medium",
"value": "medium",
...,
...,
},
},
Object {
...
},
]
我正在调用一个函数来过滤传递 2 个参数的数组:
- 我要过滤的字段
- 它应该过滤掉的值
这是我的函数和调用者
const drinkTypeHandler = (field, value) => {
const selectedType = cocktailList.filter((cocktail) => cocktail.field === value);
console.log(selectedType);
}
onPress={() => drinkTypeHandler(item.field, item.value)}
该函数可以很好地获取“值”参数,但它没有使用我传递的“字段”参数。我试图将它作为动态参数传递如下,但仍然没有成功
cocktailList.filter((cocktail) => `cocktail.${field} === ${value}`)
如果我对字段值进行硬编码,它可以工作
i.e.
cocktailList.filter((cocktail) => cocktail.type.value === value)
解决方案
要使用动态字段名称,您必须使用方括号。所以你会使用:
cocktailList.filter((cocktail) => cocktail[field] === value)
您将遇到的问题是嵌套的键/值对,type
因为您不能使用类似type.value
的符号。
推荐阅读
- office365 - 将非 Microsoft 电子邮件中的电子邮件共享给开发人员租户,反之亦然
- azure-monitoring - azure monitor 是否使用真实浏览器执行 ping 测试?
- c++ - 用 C++ 改变图像亮度
- javascript - 滑块表现得很奇怪
- python-3.x - 第二次打印时,我的快速排序代码给了我错误的结果
- powershell - Windows 窗体 (Powershell) | 消息框出现两次
- javascript - 在Javascript中访问字典中的嵌套字典
- c++ - C++ 程序提前结束
- go - 如何解析从scanner.Text()返回的JSON字符串
- sql - 是否可以在一个查询中使用 group by 和 partition by 从不同的组中获取价值?