element/zone

Zone 底座:集合计算


Methods

(static) elementBranch(array, leafValue, parentField) → {Array}

「标准」Ux.elementBranch

Zero UI中的树函数,从当前节点查找整个节点所在的分支数组(父节点、父父节点、…… 顶层祖辈),elementBranchelementChild 为互逆函数。

  1. 每个节点的默认主键字段为key
  2. 计算父节点可透过parentField传入,传入的parentField表示父节点字段。
Parameters:
Name Type Default Description
array Array

输入的数组信息。

leafValue any

被检索的子节点的值。

parentField String parent

检索树的父字段信息。

Returns:

返回分支的数组。

Type
Array

(static) elementChildTree(array, current, parentField) → {Array}

「标准」Ux.elementChildTree

Zero UI中的树函数,在数组中查找当前节点的所有子节点信息,并且构成子树,elementBranchelementChildren 为互逆函数。

  1. 计算父节点可透过parentField传入,传入的parentField表示父节点字段。
  2. 每个节点中有两个固定值
    1. key 表示每个节点的主键。
    2. children 表示每个节点中的子节点信息[]
  3. 在每个节点中计算出 _level 参数表示生成树中每个节点所在树的层级
Parameters:
Name Type Default Description
array Array

输入的数组信息。

current Object

目标节点。

parentField String parent

执行树搜索中的父字段。

Returns:

返回子节点数组

Type
Array

(static) elementChildren(array, current, parentField) → {Array}

「标准」Ux.elementChildren

Zero UI中的树函数,在数组中查找当前节点的所有子节点,构成子列表(不是子树)。

  1. 计算父节点可透过parentField传入,传入的parentField表示父节点字段。
  2. 每个节点中有两个固定值
    1. key 表示每个节点的主键。
    2. children 表示每个节点中的子节点信息[]
  3. 在每个节点中计算出 _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, value, field) → {Number}

「标准」Ux.elementUp

在排序中下移

Parameters:
Name Type Description
array Array

被查找的数组

value any

字段值

field String

字段名

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) elementFirst(array, field) → {any}

「标准」Ux.elementFirst

防御式读取数组的第一个元素,可读取某个字段值,或者查询到数组中第一个元素信息。

  1. 读取数组中的第一个元素。
  2. 根据传入的field返回不同的数据。
    1. 如果field有值,则返回这个字段对应的值。
    2. 如果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) elementFlip(input) → {Array}

「标准」Ux.elementFlip

执行数组的提取

  • input = Array,直接
  • input = Object, 将所有 value = Array 的值连接返回
Parameters:
Name Type Description
input Any

输入的信息数据。

Returns:

返回拉平后的数组

Type
Array

(static) elementGet(data, path) → {*}

「标准」 Ux.elementGet

Parameters:
Name Type Description
data
path
Returns:
Type
*

(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) elementInAll(ele, source) → {boolean}

##「标准」Ux.elementInAll

Parameters:
Name Type Description
ele
source
Returns:
Type
boolean

(static) elementInAny(ele, source) → {boolean}

##「标准」Ux.elementInAny

Parameters:
Name Type Description
ele
source
Returns:
Type
boolean

(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) elementOrder(data, keys, keyField) → {*}

「标准」 Ux.elementOrder

Parameters:
Name Type Default Description
data
keys
keyField key
Returns:
Type
*

(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

在数组中查找唯一元素

  1. 查找条件为field = value
  2. 目前只支持单字段查找,查找到多个则直接返回第一个。

框架内的调用如

    const found = Ux.elementUnique(nodes, 'identifier', identifier);
Parameters:
Name Type Description
array Array

输入的数组信息。

field String

查找的字段名。

value any

作为条件的字段值。

targetField String

目标字段。

Returns:

返回最终查找到的唯一元素Object。

Type
Object

(static) elementUp(array, value, field) → {Number}

「标准」Ux.elementUp

在排序中上移

Parameters:
Name Type Description
array Array

被查找的数组

value any

字段值

field String

字段名

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