判断模块
判断专用模块,用于各种不同的判断相关信息,函数前缀is
,通常使用为Ux.isXXX
。
函数名 | 说明 |
---|---|
isArray | 判断输入值是否是一个数组(Array)类型。 |
isAuthorized | 「引擎」判断用户是否登录并执行登录控制。 |
isCn | 检查输入字符串是否一个合法的中文字符串,通过Unicode值执行检查。 |
isCollection | 检查输入数据是否集合类型,集合类型包含ES6中的Set。 |
isCurrency | 检查输入数据是否合法的货币格式数据。 |
isDecimal | 检查输入数据是否合法的浮点数。 |
isDiff | 检查两个数据类型(Object/Array)是否内容相同。 |
isEmpty | 检查传入对象是否为空。 |
isFunction | 检查传入对象是否一个合法JavaScript函数。 |
isIn | 检查某个元素是否存在于数组中。 |
isInit | 「引擎」从LocalStorage中读取初始化已经完成的应用程序的配置数据。 |
isLogged | 「引擎」从SessionStorage读取登录用户。 |
isNotEmpty | isEmpty的逆函数。 |
isNumber | 判断输入数据是否合法整数。 |
isObject | 判断输入数据是否合法的Object,排除Array类型。 |
isParent | 「引擎」判断两个数据是否存在父子关系,父字段可使用第二参执行。 |
isQr | 「引擎」判断Ajax参数是否合法的查询引擎参数。 |
isRoute | 「引擎」判断react-router的路由路径是否存在改变。 |
isRule | 「引擎」判断前端规则是否满足条件,针对Object。 |
isRuleAll | 「引擎」针对Array,And连接,内置isRule。 |
isRuleAny | 「引擎」针对Array,Or连接,内置isRule。 |
isSame | (略)isDiff逆函数。 |
Methods
(static) isArray(input) → {boolean}
「标准」Ux.isArray
判断输入的值是否是一个合法的JavaScript中的Array类型。
内部调用underscore
,判断输入值是否是一个合法 Array 的函数,在原生的JavaScript中通常使用
Array.prototype.isPrototypeOf 的方式来判断一个输入是否Array,而这个封装包含了特殊值的检测
目前版本看起来走underscore
的流程是最靠谱的。
Parameters:
Name | Type | Description |
---|---|---|
input |
any | 输入值 |
Returns:
是数组则返回true,不是则返回false
- Type
- boolean
(static) isAuthorized(reference) → {any}
「引擎」Ux.isAuthorized
登录控制专用跳转方法,如果已登录则不执行任何跳转,如果未登录则跳转到登录界面,并且加上当前页面实现target
计算。
Parameters:
Name | Type | Description |
---|---|---|
reference |
Object | ReactComponent | React组件引用。 |
Returns:
跳转专用
- Type
- any
(static) isCn(literal) → {boolean}
「标准」Ux.isCn
判断当前字符串中是否是合法中文
,如果包含了中文则直接返回true,主要用于当前字符串中
是否包含了中文信息,在Zero Ui中使用时,会针对列宽度计算执行中文宽度计算,而开发人员
也可以直接调用该API进行检查。
const item = "你好";
const isCn = Ux.isCn(item); // 返回 true
Parameters:
Name | Type | Description |
---|---|---|
literal |
String | 输入的原始字符串 |
Returns:
匹配返回true,否则返回false
- Type
- boolean
(static) isCollection(input) → {boolean}
「标准」Ux.isCollection
检查输入数据的类型是否一个合法的集合类型,集合类型包括:
- Set:ES6中的集合类型。
- Array:标准的JavaScript中的数组Array类型。
Parameters:
Name | Type | Description |
---|---|---|
input |
any | 传入部分的数据 |
Returns:
- Type
- boolean
(static) isCurrency(literal) → {boolean}
「标准」Ux.isCurrency
判断当前字符串是否是合法货币格式,合法的货币格式包含两种:
- 基本浮点格式。
- 带千分位逗号的货币格式。
const literal = "12.33";
const literal2 = "1,135.65";
const isDecimal = Ux.isCurrency(literal); // 返回 true
const isDecimal2 = Ux.isCurrency(literal); // 返回 true
Parameters:
Name | Type | Description |
---|---|---|
literal |
String | 输入的原始字符串 |
Returns:
匹配返回true,否则返回false
- Type
- boolean
(static) isDecimal(literal) → {boolean}
「标准」Ux.isDecimal
判断当前字符串是否是合法浮点数,合法浮点数是带一个小数点的小数。
const literal = "12.33";
const isFloat = Ux.isDecimal(literal); // 返回 true
Parameters:
Name | Type | Description |
---|---|---|
literal |
String | 输入的原始字符串 |
Returns:
匹配返回true,否则返回false
- Type
- boolean
(static) isDiff(left, right) → {boolean}
「标准」Ux.isDiff
判断两个对象是否不同,内部使用Immutable.is
判断,等价于 Java 语言中的
equals 方法:
- 如果是原始JS数据类型,则直接比对二者是否不同。
- 如果是JS中的对象(Array, Object), 则比较二者的内容是否不同。
- 如果是自定义的 DataArray, DataObject, 则比较二者内容是否不同。
该比对方法针对内部数据结构以及内容执行真正意义上的比对流程,所以不存在===
的引用比对流程,通过比对来判断两者数据内容是否一致。
次方法的比对结果使用频率远高于===
的比对。众所周知,JavaScript中的三等号在比较Object/Array时比较的是二者的引用地址是否
一致,而不是数据内容是否相同,而真实场景中通常要针对数据内容进行比对,这个API就是为这个场景而设计的。
Parameters:
Name | Type | Description |
---|---|---|
left |
Object | DataObject | DataArray | 比对左值 |
right |
Object | DataObject | DataArray | 比对右值 |
Returns:
不同返回 true,相同则返回 false
- Type
- boolean
(static) isEmpty(input) → {boolean}
「标准」Ux.isEmpty
判断对象是否为空或 undefined,空包括 {},以及[]。
- 如果 undefined,则表示为空。
- 如果 Object,则判断它是否包含了键,无任何键则为空。
- 如果 Array,则判断长度是否为
0
,为0就表示空。
Parameters:
Name | Type | Description |
---|---|---|
input |
any | 输入的数据内容 |
Returns:
如果为空返回 true,否则返回 false
- Type
- boolean
(static) isFunction(input) → {boolean}
「标准」Ux.isFunction
内部调用underscore
,判断输入值是否是一个合法的 JavaScript 函数,原生调用为
Function.prototype.isPrototypeOf 的方式来判断。
Parameters:
Name | Type | Description |
---|---|---|
input |
any | 传入值 |
Returns:
是函数返回true,不是函数返回false
- Type
- boolean
(static) isInit() → {any}
「引擎」Ux.isInit
和 storeApp
对应的初始化应用数据读取专用方法。
// 读取当前应用数据
import Ux from 'ux';
const app = Ux.isInit();
Returns:
返回当前应用程序数据信息,如果没有则返回 {}
。
- Type
- any
(static) isLogged() → {any}
「引擎」Ux.isLogged
和 storeUser
对应的登录用户数据读取专用方法。
- 如果已登录,则可以读取用户数据。
- 如果未登录,则用户数据为空对象。
// 读取当前用户登录数据
import Ux from 'ux';
const user = Ux.isLogged();
Returns:
返回登录的用户数据信息,如果未登录返回 {}
。
- Type
- any
(static) isNotEmpty(input) → {boolean}
「标准」Ux.isNotEmpty
(略)isEmpty
函数的逆函数,判断结果和isEmpty
相反。
Parameters:
Name | Type | Description |
---|---|---|
input |
any | 输入的数据内容 |
Returns:
如果为空返回 false,否则返回 true
- Type
- boolean
(static) isNumber(literal) → {boolean}
「标准」Ux.isNumber
判断当前字符串是否是合法整数
,只有合法整数才会返回true。
const literal = "1233";
const isNumber = Ux.isNumber(literal); // 返回 true
Parameters:
Name | Type | Description |
---|---|---|
literal |
String | 输入的原始字符串 |
Returns:
匹配返回true,否则返回false
- Type
- boolean
(static) isObject(input) → {boolean}
「标准」Ux.isObject
是否合法对象,合法对象的满足条件如下:
- 如果是 undefined 则不是合法对象。
- 如果是 Object 还会排除 Array。
此处检查有一个和原始检查不同的点在于,检查过程中会排除Array类型,JavaScript中的Array 也是一个合法的Object,排除的目的是程序过程中Array和Object的应用场景往往不同。
Parameters:
Name | Type | Description |
---|---|---|
input |
any | 输入值 |
Returns:
如果是合法对象则为true,否则返回false
- Type
- boolean
(static) isParent(input, parent, field) → {boolean}
「引擎」Ux.isParent
检查两个节点是否有父子关系,不传入 field 时,直接检查两个核心字段
- 标准树专用字段:parent
- 非标准树的专用字段:parentId
由于是引擎函数,主键不可使用其他值,只能使用React中的通用主键key
,为了兼容前端很多操作,Zero Ui中统一使用key
字段
作为元素、记录的唯一主键字段名,某些API可变更主键名,但大部分API(特别是引擎类)都直接使用key作主键。
Parameters:
Name | Type | Description |
---|---|---|
input |
Object | 输入节点 |
parent |
Object | 父节点 |
field |
String | 固定字段检查 |
Returns:
如果 input 的 parent 是 parent,那么为 true
- Type
- boolean
(static) isQr(config) → {boolean}
「引擎」Ux.isQr
判断输入的配置是否合法的带查询的结构,输入的 config 必须是合法的 Object
格式1
{
"ajax": {
"magic":{
"...": "< 合法可解析的查询条件模式 >"
}
}
}
格式2
{
"params": {
"criteria": {
"...": "< 合法可解析的查询条件模式 >"
}
}
}
该方法比较特殊,必须配合 Zero UI 中的查询引擎执行相关处理,主要用于判断查询参数 所传入的对象必须包含以下路径下的值:
# 新格式,直接使用 ajax.magic
ajax.magic
# 旧格式(最早的查询参数)直接使用 ajax.params.criteria
ajax.params.criteria
该API是为引擎中的查询引擎量身定制的函数,用于检查一个输入参数的配置是否符合查询引擎规范, 该检查在大部分
web
组件中会检查请求发送的参数格式,使用Adaptor的设计模式进行重新设计,如果 参数格式是 Qr 类型,那么会执行查询引擎的参数语法,如果不是 Qr 类型则直接使用原生数据类型。
Parameters:
Name | Type | Description |
---|---|---|
config |
Object | 传入的配置信息 |
Returns:
如果合法则返回true,否则返回false
- Type
- boolean
(static) isRoute(props, prevProps) → {boolean}
「引擎」Ux.isRoute
连接 react-router
中的路由对象执行判断,判断当前界面是否执行了路由变化,如果出现变化则返回 true,如果没出现变化则 false。
主要检查路由地址是否发生了变化。
Zero Ui对react-router
执行了数据结构层面的封装,构造了新的TypeScript对象DataRouter
,并且这个对象贯穿于整个
Zero Ui生成$router
变量,检查时会执行path()
函数的检查,检查Uri地址是否发生了改变,如果改变则执行跳转,如果
没有发生任何改变,则不需要跳转。
代码示例:
// 主页 / 动态 / 静态页面切换的 BUG
if (Ux.isRoute(this.props, prevProps)) {
const state = Ux.clone(this.state);
state.$hoc = Fn.fnI18n(target, options);
state.$op = Fn.fnOp(options);
this.setState(state);
}
该函数通常用于静态和动态模板中实现顶层的state状态变更。
Parameters:
Name | Type | Description |
---|---|---|
props |
Object | React组件当前属性 props。 |
prevProps |
Object | React组件的前一个属性 props。 |
Returns:
返回是否发生路由变化的检查值。
- Type
- boolean
(static) isRule(record, ruleConfig) → {Boolean}
「标准」Ux.isRule
1. 基本介绍
检查记录record是否符合ruleConfig中的定义,该定义为前端查询引擎检查,配合解析表达式实现针对 数据中条件值的检查,如果符合规则,则返回true,否则返回false。
2. 规则说明
ruleConfig的数据结构如下:
{
"field1": "<RULE>",
"field2": "<RULE>",
"", true / false
}
其中<RULE>
的完整值列表如下:
NIL
:该属性必须不为空NUL
:该属性必须为空GT,<N>
:该属性大于某个值GE,<N>
:该属性大于等于某个值LT,<N>
:该属性小于某个值LE,<N>
:该属性小于等于某个值EQ,<S>
:该属性等于某个值NEQ,<S>
:该属性不等于某个值ST,<S>
:以某个字符串开始ET,<S>
:以某个字符串结束CT,<S>
:包含了某个字符串CF,<S>
:不包含某个字符串
Parameters:
Name | Type | Description |
---|---|---|
record |
Object | 输入的数据记录 |
ruleConfig |
Object | 输入的规则定义 |
Returns:
满足规则返回true,否则返回false
- Type
- Boolean
(static) isRuleAll(array, ruleConfig) → {Boolean}
「标准」Ux.isRuleAll
(略),针对Array执行每个元素的isRule
检查,最后用And连接。
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组记录 |
ruleConfig |
Object | 输入的规则定义 |
Returns:
全满足则返回true,数据和数据之间用AND
- Type
- Boolean
(static) isRuleAny(array, ruleConfig) → {Boolean}
「标准」Ux.isRuleAny
(略),针对Array执行每个元素的isRule
检查,最后用Or连接。
Parameters:
Name | Type | Description |
---|---|---|
array |
Array | 输入的数组记录 |
ruleConfig |
Object | 输入的规则定义 |
Returns:
满足一条则返回true,数据和数据之间用Or
- Type
- Boolean
(static) isSame(left, right) → {boolean}
「标准」Ux.isSame
(略)isDiff
函数的逆函数,判断结果和isDiff
相反。
Parameters:
Name | Type | Description |
---|---|---|
left |
Object | DataObject | DataArray | 比对左值 |
right |
Object | DataObject | DataArray | 比对右值 |
Returns:
不同返回 false,相同则返回 true
- Type
- boolean
(static) isSet(input) → {boolean}
「标准」Ux.isSet
判断输入的值是否是一个合法的Set类型对象。
内部调用underscore
,判断输入是否合法的 Set 的函数。
Parameters:
Name | Type | Description |
---|---|---|
input |
any | 输入值 |
Returns:
是Set则返回true,不是则返回false
- Type
- boolean
(static) isValid(input) → {boolean}
「标准」Ux.isValid
判断当前值是否可用,可用条件:
- undefined 不可用
- "" 不可用(空字符串)
- null 不可用
Parameters:
Name | Type | Description |
---|---|---|
input |
Returns:
- Type
- boolean