简介
比方咱们有一段字符串:
var code = "obj['count'].value+10"
而已知obj内容如下:
var obj={ count:{ value:7 }}
当然,表达式code可能是参数,下面的例子只是一种可能,如何求解code运算后的值?借助这里的办法就非常容易实现了。
当然,除了表达式的解析,还包含对象属性值的设置与获取。
本工具自身是平台无关的,能够在所有反对JS和TS的环境中应用,包含H5、各种小程序、uni-app等。
舒适提醒:应用中如果遇到任何问题,都能够点击此处给咱们提Issue。
引入
你须要执行上面的装置命令:
npm install --save jsdoor
而后在须要应用中央引入:
import { evalExpress, getValue, setValue } from 'jsdoor/value/index.js';
应用
evalExpress
在指定对象target上求解表达式express的值:
语法
var value=evalExpress(target, express, scope = {});
舒适提醒:一个可选参数scope示意,如果scope有值,会拦挡target,下同。
例子
当初有个json:
var json = { "a": { "b": [1, 2, 3] }}
那么执行上面的语句:
evalExpress(json, 'a.b[0]-10')
后果就是: -9
。
getValue
获取对象上字符串表达式对应的值:
语法
var value=getValue(target, express, scope = {});
例子
当初有个json:
var json = { "a": { "b": [1, { "d": "value" }, 3, 4] }}
那么执行上面的语句:
getValue(json, '["a"].b')
后果就是: [1, { "d": "value" }, 3, 4]
。
setValue
设置对象上字符串表达式对应的值:
语法
var newTarget=setValue(target, express, value, scope = {});
舒适提醒:尽管会返回新的值,不过旧的值也同步批改了,因为返回的和原来的是同一个对象。
例子
当初有个json:
var json = { "key" : [1, 2, 3]}
那么执行上面的语句:
setValue(json, '.key[1]','newValue')
此时,原来的json的值就变成了:
var json = { "key" : [1, "newValue", 3]}