一个字符串表达式解析和求解运行库
npm install --save eval-express
然后就可以引入需要的方法:
import { evalExpress, getValue, setValue } from "eval-express";
解析对象上字符串表达式:
var value=evalExpress(target, express, scope = {});
在指定对象target上求解表达式express的值,一个可选参数scope表示,如果scope有值,会拦截target,下同。
比如 现在有个json:
var json = {
"a": {
"b": [1, 2, 3]
}
};
那么执行下面的语句:
var result = evalExpress(json, 'a.b[0]-10');
结果result值就是:-9
。
获取对象上字符串表达式对应的值:
var value=getValue(target, express, scope = {});
比如,现在有个json:
var json = {
"a": {
"b": [1, { "d": "value" }, 3, 4]
}
};
那么执行下面的语句:
var result = getValue(json, '["a"].b');
结果result值就是:[1, { "d": "value" }, 3, 4]
。
设置对象上字符串表达式对应的值:
var newTarget=setValue(target, express, value, scope = {});
虽然会返回新的值,不过旧的值也同步修改了。
比如,现在有个json:
var json = {
"key" : [1, 2, 3]
};
那么执行下面的语句:
setValue(json, '.key[1]','newValue');
此时,原来的json的值就变成了:
{
"key" : [1, "newValue", 3]
}
MIT License
Copyright (c) zxl20070701 走一步,再走一步