简介

比方咱们有一段字符串:

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]}