更新记录
1.1.0(2023-11-06)
下载此版本
修复平面向量、空间向量、二维矩阵与数值乘法求值不正确的bug;
支持平面向量、空间向量、二维矩阵的 *= 运算;
支持字符串长度属性(.size/.length);
支持字符串求子串方法.substr(from, length);
1.0.9(2023-10-31)
下载此版本
修复数组元素复制时,传值/传引用自动判别错误的bug;
1.0.8(2023-10-30)
下载此版本
解决连续转义字符解析不正确的bug;
为数组增加双端队列、双端堆栈接口;
ary = [1, 2, 3, 4];
ary.push_back(99); //尾部入栈,返回ary新的长度
ary.pop_back(); //尾部出栈,返回出栈元素
ary.push_front(99); //头部入栈,返回ary新的长度
ary.pop_front(); //头部出栈,返回出栈元素
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.1.0 app-vue app-nvue |
√ |
√ |
√ |
√ |
√ |
√ |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
√ |
√ |
√ |
√ |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
xuhua-MathExpRelease
微信小程序体验码
1 使用方法
1.1 引入及调用
import { MathExp } from "@/uni_modules/xuhua-MathExpRelease/js_sdk/MathExp.js"
var mathExp = new MathExp();
mathExp.eval(`
f(x) = sin(x);
`);
mathExp.eval(`
a = f(45 * PI / 180);
`);
var res = mathExp.eval(`
[a, sin(30), f.x]; //末尾的分号一定要加
`);
res = mathExp.eval(`
【a, sin(30), f。x】; //支持中文符号,方便移动端输入
`);
if (res.succ) {
console.log(res);
}
1.2 运行结果
res = {
result: [0.7071067811865475, -0.9880316240928618, 0.7853981633974483],
succ: true
}
2 脚本语法
2.1 语句结尾需要加分号
x = 1;
str01 = "Hello World !!!";
2.2 注释
//单行注释
/*
多行注释
多行注释
*/
2.3 变量定义
var a01 = 99; //本地变量定义
var i = 0, j = 1; //本地变量定义
a02 = 99.99; //变量赋值,如果上层作用域不存在,则创建本地变量
x = y = z = 10; //连续初始化
b = "Hello World !!!";
b.size; //字符串长度
b.length; //字符串长度
for (var i=j=0; i<b.length; ++i) {
// i 为for循环局部变量
// j 如果上层作用域不存在,则创建for循环局部变量
}
2.4 数组和矩阵
2.4.1 数组定义
ary = [1, 2, 3]; //一维数组
m1x2 = [ [1, 2] ]; //二维矩阵,一行两列
m2x3 = [
[666, 12, 13],
[21, 22, 23]
];
m2x3[0][0] = 11; //666 -> 11
m2x3.size; //-> 2
m2x3.length; //-> 2
m2x3[1].size; //-> 3
//双端队列、双端堆栈接口
ary.push_back(99); //尾部入栈,返回ary新的长度
ary.pop_back(); //尾部出栈,返回出栈元素
ary.push_front(99); //头部入栈,返回ary新的长度
ary.pop_front(); //头部出栈,返回出栈元素
2.4.2 向量叉乘
//平面向量叉乘
a = [1, 2];
b = [3, 4];
a * b; // => 结果:-2
b * a; // => 结果:2
//空间向量叉乘
c = [1, 0, 0];
d = [0, 1, 0];
c * d; // => 结果:[0, 0, 1]
d * c; // => 结果:[0, 0, -1]
2.4.3 二维矩阵乘法
// 2 * 3 矩阵
A = [
[1, 2, 3],
[3, 2, 1]
];
// 3 * 2 矩阵
B = [
[1, 1],
[2, 2],
[3, 3]
];
// 结果:2 * 2 矩阵
A * B;
=> 结果:
[
[14, 14],
[10, 10]
]
2.5 函数定义
f(x) = 16 * sin(x + 1) + 8;
g(x, y) = {
z = f(x) + sin(y);
return z;
}
f.x; //访问 f 函数内部变量 x
g.z; //访问 g 函数内部变量 z
2.6 分支 if 语句
c = 0;
if (a > b) {
c = a;
} else {
c = b;
}
2.7 分支 switch 语句
c = 0;
switch (a) {
case 0:
c = 10;
break;
case 10:
c = 20;
break;
default:
c = 100;
}
2.8 循环语句 for
for (var i=0; i<10; ++i) {
if (i == 5) continue;
print("第 " + (i+1) + "次\n");
if (i == 8) break;
}
2.9 运算符
//数学运算
加减乘除:+ - * /, +=, -=, *=, /=
取模:x % 2, %=
乘方:x^2, ^=
阶乘:3!
自增自减:++x, x++, --x, x--
逻辑运算:&&, ||, !, ==, !=, >, >=, <, <=
三目运算:a > b ? a : b
位运算:&, |, ~, &=, |=, xor(a, b), >>, <<, >>=, <<=
2.10 内部常量
E = 2.718281828459045
PI = 3.141592653589793
2.11 内部函数
abs(x): 求绝对值
floor(x): 求不大于x的整数
ceil(x): 求不小于x的整数
round(x): 四舍五入
sqrt(x): 求x的平方根
exp(x): 求自然底数E的x次方
log(x): 求以E为底的自然对数
sin(x): 求x弧度的正弦
cos(x): 求x弧度的余弦
tan(x): 求x弧度的正切
asin(x): 求x弧度的反正弦
acos(x): 求x弧度的反余弦
atan(x): 求x弧度的反正切,结果范围[-PI/2 ~ PI/2]
random(): 求随机数,范围[0 ~ 1]
xor(x, y): 求x和y的按位亦或
length(x): 求向量的长度
normalize(x): 求向量x的归一化向量
dot(m1, m2): 求向量m1和m2的点乘积
print(x): 打印x的值,内部为console.log(x)