javascript - JS 对象查询语法
问题描述
我正在尝试找到一种使用类似于 SQL 的查询语法过滤 js 集合的方法。
我发现完成这项任务的唯一库是json-query。
它在某些情况下有效,但有局限性。不可能使用相同的查询查询不同的对象级别或查询多个结果。
以下是一些示例(以下面的数据结构为参考)
[{
"type": "UU",
"value": "100",
"tipo": "G",
"strumento": "P",
"aspetto": "C",
"unit": "ml"
},
{
"type": "PS",
"value": "120/88",
"rilevamento": "Manuale",
"lato": "SX",
"part": "Supina",
"unit": "mmHg"
},
{
"type": "TP",
"value": "33.6",
"tipo": "T",
"unit": "°C"
},
{
"type": "VO",
"value": "12",
"tipo": "VOAL",
"unit": "ml"
},
{
"type": "RS",
"value": "60",
"unit": "atti/min"
},
{
"type": "HH",
"value": "180",
"modalita": "R",
"unit": "cm"
},
{
"type": "AA",
"value": "50",
"unit": "cm"
},
{
"type": "PO",
"value": "70",
"rilevamento": "Manuale",
"tipo": "FA",
"sede": "PC",
"unit": "bpm"
}
]
- 类型 = TP 值 > 30
[type=TP & value>30] (适用于 json-query)
- type = TP 值 > 30 AND type = UU 值 > 90
[type=TP & value>30 & type = UU with value > 90](不适用于 json-query)
解决方案
通过简要查看 json-query 页面,我认为您的第二个查询是错误的。没有 * 查询将只返回一条记录。然后,您的查询没有意义,您不能拥有具有两种不同类型的项目。我认为您的查询应如下所示:
[* 类型=TP & 价值 > 30 | 类型 = UU & 值 > 90]
我可能是错的,我从来没有使用过那个图书馆。
编辑评论
你不能用简单的查询来做到这一点,因为每个对象都由你的查询测试,如果它适合或不适合,就简单地返回 bool 值。您需要按第一个条件过滤数据,并使用第二个条件过滤结果。
var tempData = jsonQuery('[* type = TP & value > 30]', {data: data}).value;
var result = jsonQuery('[* type = UU & value > 90]', {data: tempData }).value;
编辑 - 可能的解决方案
如果您需要事先创建查询,我会考虑使用数组来存储单个查询,然后按顺序应用它们。我不知道您是在 JS 中还是在服务器上创建查询,所以我在 JS 中编写了它以保持代码一致性。
var result;
var queryArray;
queryArray.push("[* type = TP & value > 30]");
queryArray.push("[* type = UU & value > 90]");
for (i = 0; i < queryArray.length; i++) {
result = jsonQuery(queryArray[i], {data: result }).value;
}
推荐阅读
- spring-boot - SpringBoot IBM MQ 无用户认证
- r - 时间序列预测 - ARIMA/ARIMAX 与 R 中的每日数据
- java - Spring Boot 服务中的 utf-8 字符串
- html - CSS @media print with inches 在打印后给出其他尺寸
- python-3.x - 为什么 help(SRE_Class) 不显示任何内容?
- git - 将 Git Repository 库导入 Flutter
- qt - How to anchor different things based on a property?
- c# - 使用 Xcode 开发 C# 是否仍然可用?
- docker - 无法从本地 Docker 注册表中获取本地 Kubernetes (minikube)
- wordpress - .htaccess 和 wordpress 重定向问题