【发布时间】:2021-09-24 09:06:34
【问题描述】:
有点冗长,所以那些喜欢挑战的人(或者我只是知识不足 - 希望这是一个简单的解决方案!)继续阅读!
(跳到实际问题部分以跳过解释和我尝试过的内容)
问题
我有一个网站,它有一个数据集,其中包含一个对象,里面有多个对象。这些对象中的每一个都包含一个数组,并且在该数组中存在多个对象。 (是的,这很痛苦,但它来自 API,我需要在不更改或修改它的情况下使用此数据集。)我正在尝试根据最终对象中的键值对过滤数据集。但是,我同时执行了多个过滤器。
循环前路径示例,检索一个大厅所需的键值对。
["Hamilton Hall"]["Hire Options"][2].Commercial
所有大厅所需键值对的循环路径后,而不是一个(存储大厅标识符):
[0]["Hire Options"][2].Commercial
循环允许我检查每个大厅是否有特定的键值对(有点像 map 或 forEach,但针对的是一个对象)。
在解决这个问题之后回到问题。
我将如何过滤显示哪些循环对象?
我的尝试
(userInput 在别处定义 - 这发生在 btn 点击 btw)
let results = Object.keys(halls);
for (key of results) {
let weekend = [halls[ `${key}` ][ 'Hire Options' ][4][ 'Weekend function' ]];
if(userInput == weekend) {
outputAll([halls[ `${key}` ]]);
}
}
过滤得很好。但是,我在这里遇到了一个问题。我想通过多个查询进行过滤,并且在 if 语句中自然添加 AND 是行不通的。我也不想有 10 个 if 语句(我有 10 多个需要排序的各种数据类型的过滤器)。
我最近听说过三元运算符,但对它们了解不够,不知道这样做是否正确?如果是这样,怎么做?还简要查看了开关,但看起来不像我想要的(如果我错了,请纠正我。)
实际问题减去喋喋不休/解释
有没有办法让我动态修改 if 语句条件?例如添加或删除 if 语句的条件?比如如果'a'的过滤器设置为关闭,在if语句中删除'a'的AND条件?这意味着结果将仅使用活动过滤器进行过滤。
非常感谢任何帮助、cmets 或“你为什么不尝试这个”评论!
谢谢!
仅供参考,以下是在第一个对象循环时检索每个对象的代码:
(循环代码)
halls = data[ 'Halls' ];
let results = Object.keys(halls);
for (key of results) {
let arr = [halls[ `${key}` ]];
outputAll(arr);
}
【问题讨论】:
标签: javascript object filter dynamic conditional-statements