乐趣区

关于javascript:JS字符串表达式解析常用方法

简介

比方咱们有一段字符串:

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]
}
退出移动版