如何在JSONata中统计符合条件的员工总数(cnti字段求和)
解决方案:统计符合条件的员工总数
1. 修改JSONata表达式实现求和
直接用JSONata的sum()聚合函数结合过滤逻辑,就能算出符合条件的员工总数,替代原来逐个输出cnti值的方式。
假设你的员工排班JSON结构如下:
{ "employees": [ {"id": 1, "name": "员工A", "cnti": 1}, {"id": 2, "name": "员工B", "cnti": 1}, {"id": 3, "name": "员工C", "cnti": ""} ] }
替换原JSONata代码为:
sum(employees[cnti != ""].cnti)
employees[cnti != ""]:先筛选出cnti不为空的员工条目.cnti:提取这些员工的cnti值(即1)sum():对所有提取到的1求和,直接得到符合条件的员工总数
2. 调整HTML输出逻辑
原HTML可能是循环遍历每个cnti并输出,现在只需直接渲染求和后的结果即可:
<!-- 原HTML(输出多个1) --> <div id="result"></div> <script> const data = {/* 你的员工JSON数据 */}; const result = jsonata('employees.cnti').evaluate(data); document.getElementById('result').innerHTML = result.join(''); // 输出"11" </script> <!-- 修改后的HTML(输出总数) --> <div id="result"></div> <script> const data = {/* 你的员工JSON数据 */}; const count = jsonata('sum(employees[cnti != ""].cnti)').evaluate(data); document.getElementById('result').innerHTML = count; // 输出"2" </script>
关键说明
- 如果不符合条件时
cnti字段是null而非空字符串,把过滤条件改成cnti != null即可 - JSONata的
sum()会自动忽略null和空值,但显式过滤能让逻辑更清晰,避免意外情况
内容的提问来源于stack exchange,提问作者Zerono
相关产品推荐
相关产品推荐

