数组操作模块
值处理专用模块
函数名 | 说明 |
---|---|
elementBranch | 从当前节点查找所在分支的数组,父节点和祖辈(包含当前节点)。 |
elementChildren | 在数组中查找当前节点所有子节点,构成子列表(Array)。 |
elementChildTree | 在数组中查找当前节点所有子节点信息,构成子树。 |
elementFind | 在数组中查找和filters 匹配的元素构成子数组(Array)。 |
elementFindDatum | 「引擎」带字典的elementFind。 |
elementFirst | 返回数组的第一个元素或第一个元素中某个字段的值。 |
elementFlat | 树拉平函数,构造时使用children作为子节点。 |
elementGrid | 将Array转换成二维模型(矩阵模型)。 |
elementGroup | 按某个字段对Array进行分组,每一组都是Array数据。 |
elementGroupDatum | 「引擎」带字典的elementGroup。 |
elementIndex | 查找某个元素在Array中的索引值。 |
elementJoin | 连接两个Array按某个字段field连接到一起(合并+追加)。 |
elementMap | 按某个字段将Array进行映射转换,field = Object的Map结构。 |
elementParent | 查找所有父节点和祖辈(不包含当前节点)。 |
elementSave | 不重复添加某个元素到Array数组中,以 field 为唯一键判定依据。 |
elementUnique | 按 field = value 在数组中查找唯一元素,如果存在targetField则返回查找元素的某个字段数据。 |
elementUniqueDatum | 「引擎」带字典的elementUnique,不支持targetField属性。 |
elementVertical | 投影数组元素中某个字段生成新集合。 |
elementWrap | 交换数组中两个索引位置的元素。 |
Methods
(static) elementBranch(array, leafValue, parentField) → {Array}
「标准」Ux.elementBranch
Zero UI中的树函数,从当前节点查找整个节点所在的分支数组(父节点、父父节点、…… 顶层祖辈),elementBranch
和 elementChild
为互逆函数。
- 每个节点的默认主键字段为
key
。 - 计算父节点可透过
parentField
传入,传入的parentField
表示父节点字段。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
array |
Array | 输入的数组信息。 |
|
leafValue |
any | 被检索的子节点的值。 |
|
parentField |
String |
parent
|
检索树的父字段信息。 |
Returns:
返回分支的数组。
- Type
- Array
(static) elementChildren(array, current, parentField) → {Array}
「标准」Ux.elementChildren
Zero UI中的树函数,在数组中查找当前节点的所有子节点,构成子列表(不是子树)。
- 计算父节点可透过
parentField
传入,传入的parentField
表示父节点字段。 - 每个节点中有两个固定值
- key 表示每个节点的主键。
- children 表示每个节点中的子节点信息
[]
。
- 在每个节点中计算出
_level
参数表示生成树中每个节点所在树的层级
。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
array |
Array | 输入的数组信息。 |
|
current |
Object | 目标节点。 |
|
parentField |
String |
parent
|
执行树搜索中的父字段。 |
Returns:
返回子节点数组
- Type
- Array
(static) elementChildTree(array, current, parentField) → {Array}
「标准」Ux.elementChildTree
Zero UI中的树函数,在数组中查找当前节点的所有子节点信息,并且构成子树,elementBranch
和 elementChildren
为互逆函数。
- 计算父节点可透过
parentField
传入,传入的parentField
表示父节点字段。 - 每个节点中有两个固定值
- key 表示每个节点的主键。
- children 表示每个节点中的子节点信息
[]
。
- 在每个节点中计算出
_level
参数表示生成树中每个节点所在树的层级
。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
array |
Array | 输入的数组信息。 |
|
current |
Object | 目标节点。 |
|
parentField |
String |
parent
|
执行树搜索中的父字段。 |
Returns:
返回子节点数组
- Type
- Array
(static) elementConcat(original, current, field) → {Array}
「标准」Ux.elementConcat
不重复添加某个元素,按field的执行唯一元素的判定,默认使用key
字段。
Parameters:
Name | Type | Description |
---|---|---|
original |
Array | 数组输入源头 |
current |
Array | 被输入的记录集 |
field |
String | 主键字段 |
Returns:
返回合并后的数组
- Type
- Array
(static) elementDown(array, field, value) → {Number}
「标准」Ux.elementUp
在排序中下移
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 被查找的数组 |
field |
String | 字段名 |
value |
any | 字段值 |
Returns:
找到的索引
- Type
- Number
(static) elementFind(array, filters, fuzzy) → {Array}
「标准」Ux.elementFind
针对数组的查找操作,查找符合 filters 条件的数组,内部使用该函数的代码
const _g6Find = ($data = [], identifier) => {
const found = Ele.elementFind($data, {identifier});
if (1 === found.length) {
return found[0];
} else {
const filter = found.filter(item => item.leaf); // 叶节点优先
if (1 === filter.length) {
return filter[0];
}
}
};
Parameters:
Name | Type | Default | Description |
---|---|---|---|
array |
Array | 输入的数组信息。 |
|
filters |
Object | 过滤专用键值对。 |
|
fuzzy |
Boolean |
false
|
是否开启模糊查找 |
Returns:
返回查找到的数组信息,最终结果也是一个[]
。
- Type
- Array
(static) elementFindDatum(reference, source, filters) → {Array}
「引擎」Ux.elementFindDatum
带辅助数据的强化版elementFind
方法。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React对应组件引用。 |
source |
String | 需要读取的 Tabular/Assist 的键值。 |
filters |
Object | 查询条件。 |
Returns:
返回查找的数组。
- Type
- Array
(static) elementFirst(array, field) → {any}
「标准」Ux.elementFirst
防御式读取数组的第一个元素,可读取某个字段值,或者查询到数组中第一个元素信息。
- 读取数组中的第一个元素。
- 根据传入的field返回不同的数据。
- 如果field有值,则返回这个字段对应的值。
- 如果field无值,则返回整个元素(单参数调用方法)。
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组信息 |
field |
String | 读取的字段名 |
Returns:
返回任意值
- Type
- any
(static) elementFlat(array) → {Array}
「标准」Ux.elementFlat
数组元素拉平函数,将一个完整的树拉平成不带树结构的数据,拉平的基础是以React中的children
属性为基础,执行反复递归拉平
处理,直到最后没有任何元素为止(最终的children长度为0,forEach不执行。)
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组信息。 |
Returns:
返回拉平后的数组
- Type
- Array
(static) elementGrid(source, columns)
「标准」Ux.elementGrid
直接将 Array 拆分成一个 Grid 结构,生成矩阵模型。
const array = [
"A","B","C",
"D","E","F",
"G"
]
const matrix = Ux.elementGrid(array,3);
执行过后的数据结构如下:
[
[ "A", "B", "C" ],
[ "D", "E", "F" ],
[ "G" ]
]
Parameters:
Name | Type | Description |
---|---|---|
source |
Array | 原始数组 |
columns |
Number | 拆分成多少列 |
(static) elementGroup(array, field) → {Object}
「标准」Ux.elementGroup
按照某个字段对这个数组进行分组操作。
const input = [
{"name": "lang", type: "user"},
{"name": "lang2", type: "employee"},
{"name": "lang3", type: "employee"}
]
const grouped = Ux.elementGroup(input, "type");
最终计算出来的grouped
的数据结构如下:
{
"user": [
{"name": "lang", type: "user"}
],
"employee: [
{"name": "lang2", type: "employee"},
{"name": "lang3", type: "employee"}
]
}
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组 |
field |
String | 分组专用的字段信息 |
Returns:
分组过后每一个键值对为key = Array
- Type
- Object
(static) elementGroupDatum(reference, source, field) → {Object}
「引擎」Ux.elementGroupDatum
带辅助数据的强化班elementGroup
方法。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React对应组件引用。 |
source |
String | 需要读取的 Tabular/Assist 的键值。 |
field |
String | 分组专用的字段名。 |
Returns:
分组过后的数据。
- Type
- Object
(static) elementIndex(array, field, value) → {Number}
「标准」Ux.elementIndex
数组索引查找元素,查找 field = value 的索引专用
1)查找1:传入了 field,直接查找 field = value 的元素所在的 index 2)查找2:未传入 field,直接查找值(纯数组)
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 被查找的数组 |
field |
String | 字段名 |
value |
any | 字段值 |
Returns:
找到的索引
- Type
- Number
(static) elementJoin(target, source, field) → {Array}
「标准」Ux.elementJoin
两个数组的连接函数,将两个Array按field字段进行连接,如果存在该元素,则直接执行Object.assign
的合并,
如果没有找到该元素,则添加新元素,最终的结果以target + source
的结果为主。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
target |
Array | 被合并的数组 |
|
source |
Array | 将被合并的数组 |
|
field |
String |
key
|
合并字段 |
Returns:
返回最终数据
- Type
- Array
(static) elementMap(array, field, fieldTo) → {Object}
「标准」Ux.elementMap
针对数组执行映射拉平操作,拉平过后的数据形成一个Map结构。
const user = [
{name:"lang1", email":"silentbalanceyh@126.com"},
{name:"lang2", type:"employee"},
{name:"lang3", type:"user"},
{name:"lang4", type:"user"}
]
const mapped = Ux.elementMap(user, "name");
// 最终计算的值
// mapped = {
// "lang1": {},
// "lang2": {},
// ...
// }
// 映射最终结果是一个 Array(无重复记录)
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组信息 |
field |
String | 执行映射的字段名 |
fieldTo |
String | 执行映射的字段名 |
Returns:
返回Map过后的最终数据
- Type
- Object
(static) elementMapDatum(reference, source, from, to) → {Object}
「引擎」Ux.elementMapDatum
带辅助数据的强化班elementMap
方法。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React对应组件引用。 |
source |
String | 需要读取的 Tabular/Assist 的键值。 |
from |
String | 构造Map键。 |
to |
String | 构造Map值。 |
Returns:
分组过后的数据。
- Type
- Object
(static) elementParent(array, leafValue, parentField) → {Array}
「标准」Ux.elementParent
在 elementBranch 基础之上删除掉当前节点的运算。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
array |
Array | 输入的数组信息。 |
|
leafValue |
any | 被检索的子节点的值。 |
|
parentField |
String |
parent
|
检索树的父字段信息。 |
Returns:
返回分支的数组。
- Type
- Array
(static) elementSave(data, item, idField) → {Array}
「标准」Ux.elementSave
不重复添加某个元素,按field的执行唯一元素的判定,默认使用key
字段。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
data |
Array | 数组输入源头 |
|
item |
Object | 被输入的记录集 |
|
idField |
String |
key
|
主键字段 |
Returns:
返回合并后的数组
- Type
- Array
(static) elementUnique(array, field, value, targetField) → {Object}
「标准」Ux.elementUnique
在数组中查找唯一元素
- 查找条件为
field = value
。 - 目前只支持单字段查找,查找到多个则直接返回第一个。
框架内的调用如
const found = Ux.elementUnique(nodes, 'identifier', identifier);
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组信息。 |
field |
String | 查找的字段名。 |
value |
any | 作为条件的字段值。 |
targetField |
String | 目标字段。 |
Returns:
返回最终查找到的唯一元素Object。
- Type
- Object
(static) elementUniqueDatum(reference, source, field, value) → {Object|null}
「引擎」Ux.elementUniqueDatum
带辅助数据的强化版elementUnique
方法。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React对应组件引用。 |
source |
String | 需要读取的 Tabular/Assist 的键值。 |
field |
String | 查询专用字段。 |
value |
any | 查询字段对应的值。 |
Returns:
返回查找到的唯一记录数据。
- Type
- Object | null
(static) elementUp(array, field, value) → {Number}
「标准」Ux.elementUp
在排序中上移
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 被查找的数组 |
field |
String | 字段名 |
value |
any | 字段值 |
Returns:
找到的索引
- Type
- Number
(static) elementVertical(array, field) → {Array}
「标准」Ux.elementVertical
针对数组执行映射操作,将垂直映射过的值合并成一个无重复元素的集合。
const user = [
{name:"lang1", email":"silentbalanceyh@126.com"},
{name:"lang2", type:"employee"},
{name:"lang3", type:"user"},
{name:"lang4", type:"user"}
]
const mapped = Ux.elementVertical(user, "type");
// 最终计算的值
// mapped = ["user", "employee"]
// 映射最终结果是一个 Array(无重复记录)
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组信息 |
field |
String | 执行映射的字段名 |
Returns:
新字段值构造的最终集合
- Type
- Array
(static) elementWrap(array, fromIndex, toIndex) → {Array}
「标准」Ux.elementWrap
数组元素交换元素,将两个元素交换位置专用。
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组信息。 |
fromIndex |
Number | 交换的开始索引 |
toIndex |
Number | 交换的结束索引 |
Returns:
返回原始数组引用
- Type
- Array