共计 1009 个字符,预计需要花费 3 分钟才能阅读完成。
简介
比方咱们有一段字符串:
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]
}
正文完
发表至: javascript
2023-01-12