You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求支持数学运算的JS版LQL链接过滤npm库

解决方案:支持数学运算与多字段关联的JS数组过滤工具

针对你的需求——让用户输入包含数学运算、多字段关联的过滤条件来筛选JS对象数组,以下几个npm包可以满足要求:

1. expr-eval

这是轻量级的表达式解析器,完美适配你的场景,支持直接引用对象属性、复杂数学运算,语法和JS表达式高度一致,用户学习成本低。

使用示例:

import { Parser } from 'expr-eval';
const parser = new Parser();

// 用户在输入框中输入的过滤条件
const userFilter = "height > (3 * weight / 4)";
const parsedExpr = parser.parse(userFilter);

// 执行过滤
const filteredHumans = arrayOfHumans.filter(human => parsedExpr.evaluate(human));

你可以通过配置Parser来限制允许的函数和变量,降低安全风险,比如禁用全局对象访问。

2. mathjs

作为功能全面的数学库,它同样支持解析包含对象属性引用的表达式,还提供了丰富的数学函数(如平方根、三角函数等),适合需要更复杂运算场景的需求。

使用示例:

import { evaluate } from 'mathjs';

const userFilter = "height > (3 * weight / 4)";
const filteredHumans = arrayOfHumans.filter(human => evaluate(userFilter, human));

3. json-query

专注于JSON数据查询的工具,支持用表达式作为过滤条件,语法简洁,同时支持链式查询操作,适合需要结合其他JSON查询逻辑的场景。

使用示例:

import jsonQuery from 'json-query';

const userFilter = '[*height > (3 * weight / 4)]';
const filteredHumans = jsonQuery(userFilter, { data: arrayOfHumans }).value;

安全提醒

允许用户输入自定义表达式存在代码注入风险,建议:

  • 对用户输入的表达式进行语法校验和白名单限制(比如仅允许引用指定字段、使用指定运算)
  • 敏感数据的过滤操作尽量在后端执行,避免前端直接处理敏感逻辑

内容的提问来源于stack exchange,提问作者The Traveling Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:12:46