5.9 KiB
5.9 KiB
基础函数 / 数组
descartesJoin(v_1, v_2, ...)
声明:function
计算多个值或数组的笛卡尔积
| 参数 | 类型 | 说明 |
|---|---|---|
v_1 |
any | 第一个值或数组 |
v_2 |
any | 第二个值或数组 |
... |
any | 可选。更多值或数组 |
返回:array
示例
范例01:连接三个输入值
return descartesJoin(1->3, 21->22, 3);
// 输出:
// array(
// (1,21,3),
// (1,22,3),
// (2,21,3),
// (2,22,3),
// (3,21,3),
// (3,22,3))
framemerge(left, right, ons, how, suffixes, if_multi_field, keep_method)
声明:function
按指定字段连接两个数据表
| 参数 | 类型 | 说明 |
|---|---|---|
left |
table | 左表 |
right |
table | 右表 |
ons |
string|array | 连接字段或左右表连接字段数组 |
how |
string|integer | 可选。连接方式,默认 inner |
suffixes |
array | 可选。重名字段后缀,默认 array('_x', '_y') |
if_multi_field |
boolean | 可选。是否按多个共同字段连接,默认 false |
keep_method |
integer | 可选。重名字段保留方式,默认 0 |
返回:array
示例
范例01:按 id 执行内连接
left := `array('id': (1, 2), 'left_value': (10, 20));
right := `array('id': (2, 3), 'right_value': (30, 40));
return framemerge(
left, right, 'id', 'inner', array('_x', '_y'), false, 0);
// 输出:array(("id_x":2,"left_value":20,"id_y":2,"right_value":30))
frameupdate(left, right, ons, type)
声明:function
按键字段用右表补充或更新左表中的缺失值,并直接修改左表
| 参数 | 类型 | 说明 |
|---|---|---|
left |
table | 待更新的左表 |
right |
table | 提供更新值的右表 |
ons |
string|array | 可选。键字段,省略时按下标连接 |
type |
integer | 可选。缺失值类型位掩码,默认 15 |
返回:array
示例
范例01:用右表填充左表缺失值
left := `array('id': (1, 2), 'value': (nil, 20));
right := `array('id': (1, 2), 'value': (10, 30));
return frameupdate(left, right, 'id', 15);
// 输出:
// array(
// ("id":1,"value":10),
// ("id":2,"value":20))
getSubTableByField(t, fields)
声明:function
按字段名称提取数据表的指定列
| 参数 | 类型 | 说明 |
|---|---|---|
t |
array | 数据表 |
fields |
string | 字段名称,多个名称用分号分隔 |
返回:array
示例
范例01:提取 name 和 price 两列
value := array(
("name": "A", "price": 1, "amount": 10),
("name": "B", "price": 2, "amount": 20));
return getSubTableByField(value, "name;price");
// 输出:
// array(
// ("name":"A","price":1),
// ("name":"B","price":2))
renameFieldByFormat(t, suffix, if_copy)
声明:function
按格式字符串批量修改数据表字段名
| 参数 | 类型 | 说明 |
|---|---|---|
t |
array | 待处理数据表 |
suffix |
string | 格式字符串,%s 表示原字段名 |
if_copy |
boolean | 可选。是否在副本上修改,默认 true |
返回:array
示例
范例01:为全部字段添加后缀
value := array(("a": 1, "b": 2));
return renameFieldByFormat(value, "%s_x", true);
// 输出:array(("a_x":1,"b_x":2))
speye(m)
声明:function
创建指定阶数的稀疏单位矩阵
| 参数 | 类型 | 说明 |
|---|---|---|
m |
integer | 矩阵阶数 |
返回:array
示例
范例01:创建三阶稀疏单位矩阵
return speye(3);
// 输出:
// array(
// (1),
// (1:1),
// (2:1))
tableType(t)
声明:function
判断数组的数据表下标类型
| 参数 | 类型 | 说明 |
|---|---|---|
t |
array | 待判断数组 |
不是数组时返回 -1,字符串下标数组返回 0,数字下标数组返回 1
返回:integer
示例
范例01:判断数字下标二维数组
return tableType(array((1, 2), (3, 4)));
// 输出:1
webFormatToRung(a, type, zero_eps)
声明:function
将数组中的 nan、nil、正负无穷和接近零的数值替换为短横线
| 参数 | 类型 | 说明 |
|---|---|---|
a |
array | 待处理数组 |
type |
integer | 可选。替换类型位掩码,默认 15 |
zero_eps |
real | 可选。接近零的判断阈值,默认 epsi() |
返回:any
示例
范例01:替换 nil 和 nan
value := array(nil, nan, 1);
return webFormatToRung(value, 15, 1e-10);
// 输出:array("-","-",1)