utils FHelp

为常用操作提供的实用函数库

See

Methods

(static) F() → {false}

False 回调

一个总是返回 false 的函数。任何传入的参数都将被忽略

Returns:
Type: 
false
Example
FHelp.F(); //=> false

(static) T() → {true}

True 回调

一个总是返回 true 的函数。任何传入的参数都将被忽略

Returns:
Type: 
true
Example
FHelp.F(); //=> true

(static) clamp(min, max, value) → {number}

限制范围

将 number 限制在某个范围内

也适用于其他有序类型,如字符串和日期

Parameters:
NameTypeDescription
minnumber

clamp 的最小值 (包括 min)

maxnumber

clamp 的最大值 (包括 max)

valuenumber

Returns:

val < min 时返回 min, 当 val > max 时返回 max, 否则返回 value

Type: 
number
Example
FHelp.clamp(1, 10, -5) // => 1
FHelp.clamp(1, 10, 15) // => 10
FHelp.clamp(1, 10, 4)  // => 4

(static) defaultTo(def, val) → {T|V}

默认值

如果第二个参数不是 null、undefined 或 NaN,则返回第二个参数,否则返回第一个参数(默认值)

Parameters:
NameTypeDescription
defT

默认值

valV

当前值

Returns:

val 无效则是 def, 否则是 val

Type: 
T | V
Example
FHelp.defaultTo(42, null);  //=> 42
FHelp.defaultTo(42, undefined);  //=> 42
FHelp.defaultTo(42, false);  //=> false
FHelp.defaultTo(42, 'Ramda');  //=> 'Ramda'
// parseInt('string') results in NaN
FHelp.defaultTo(42, parseInt('string')); //=> 42

(static) groupBy(fn, list) → {Record.<K, Array.<T>>}

分组

根据对每个元素调用键返回函数的结果,将列表拆分为存储在对象中的子列表,并根据返回的值对结果进行分组

Parameters:
NameTypeDescription
fnFHelp~TParam.<T, K>

分组函数

listArray.<T>

数据集

Returns:

一个对象,输出键值为fn,映射到传递给fn时产生该键的元素数组。

Type: 
Record.<K, Array.<T>>
Example
const byGrade = function(student) {
  const score = student.score;
  return score < 65 ? 'F' :
         score < 70 ? 'D' :
         score < 80 ? 'C' :
         score < 90 ? 'B' : 'A';
};
const students = [{name: 'Abby', score: 84},
                  {name: 'Eddy', score: 58},
                  // ...
                  {name: 'Jack', score: 69}];
FHelp.groupBy(byGrade, students);
// {
//   'A': [{name: 'Dianne', score: 99}],
//   'B': [{name: 'Abby', score: 84}]
//   // ...,
//   'F': [{name: 'Eddy', score: 58}]
// }

(static) is(classes, val) → {boolean}

判断 val 是否是 classes 的子类实例

查看一个对象(例如val)是否是所提供构造函数的实例。这个函数将检查继承链(如果有的话)。

如果val是用Object创建的。create (Object, val) === true

Parameters:
NameTypeDescription
classesObject

类型

valInstanceType.<Object>

实例

Returns:
Type: 
boolean
Example
FHelp.is(Object, {}); //=> true
FHelp.is(Number, 1); //=> true
FHelp.is(Object, 1); //=> false
FHelp.is(String, 's'); //=> true
FHelp.is(String, new String('')); //=> true
FHelp.is(Object, new String('')); //=> true
FHelp.is(Object, 's'); //=> false
FHelp.is(Number, {}); //=> false

(static) isNotValid(param) → {boolean}

参数无效

判断给定参数是否有效

Parameters:
NameTypeDescription
paramany
Returns:

true: 无效

Type: 
boolean
Example
FHelp.isNotValid(null);                //=> true
FHelp.isNotValid(undefined);           //=> true
FHelp.isNotValid(NaN);                 //=> true
FHelp.isNotValid([]);                  //=> true
FHelp.isNotValid('');                  //=> true
FHelp.isNotValid({});                  //=> true
FHelp.isNotValid(Uint8Array.from('')); //=> true
FHelp.isNotValid({length: 0});         //=> false
FHelp.isNotValid([1, 2, 3]);           //=> false
FHelp.isNotValid(0);                   //=> false

(static) isValid(param) → {boolean}

参数有效

判断给定参数是否有效

Parameters:
NameTypeDescription
paramany
Returns:

true: 有效

Type: 
boolean
Example
FHelp.isValid(value) // => !FHelp.isNotValid(value)

(static) mergeAll(…params) → {any}

深度合并

从对象列表中创建一个具有自己属性的新对象。如果一个键存在于多个对象中,则将使用它存在的最后一个对象中的值。

Parameters:
NameTypeAttributesDescription
paramsany<repeatable>
Returns:
Type: 
any
Example
FHelp.mergeAll({foo:1},{bar:2},{baz:3}); //=> {foo:1,bar:2,baz:3}
FHelp.mergeAll({foo:1},{foo:2},{bar:2}); //=> {foo:2,bar:2}

(static) mergeDeepWith(…params) → {any}

深度合并

合并两个对象的自身属性(不包括 prototype 属性)。如果某个 key 在两个对象中都存在:

  • 并且两个关联的值都是对象,则继续递归合并这两个值。
  • 否则,使用给定函数对两个值进行处理,并将返回值作为该 key 的新值。

如果某 key 只存在于一个对象中,该键值对将作为结果对象的键值对。

Parameters:
NameTypeAttributesDescription
paramsany<repeatable>
Returns:
Type: 
any
Example
mergeDeepWith({ a: true, c: { values: [10, 20] }},
              { b: true, c: { values: [15, 35] }});
//=> { a: true, b: true, c: { values: [10, 20, 15, 35] }}

(static) mixin(base, …classes) → {ObjectConstructor}

混合类型

将多个类混合到基类

基础类上存在的 key 不会被其他类覆盖

Parameters:
NameTypeAttributesDescription
baseObjectConstructor

基类

classesObjectConstructor<repeatable>

混合类

Returns:

基类

Type: 
ObjectConstructor

(static) mixinProperty(base, …property) → {InstanceType.<Object>}

混合属性

将多个对象上的属性混合到基础属性里

基础属性上存在的 key 不会被其他属性覆盖

Parameters:
NameTypeAttributesDescription
baseInstanceType.<Object>

基础属性

propertyInstanceType.<Object><repeatable>

其他属性

Returns:

基础属性

Type: 
InstanceType.<Object>

(static) random(minopt, maxopt, roundopt) → {number}

范围随机值

获取 min 到 max 之间的随机数

Parameters:
NameTypeAttributesDefaultDescription
minnumber<optional>
0

最小值

maxnumber<optional>
1

最大值

round'floor' | 'ceil' | null<optional>
null

取整

Returns:

随机值

Type: 
number
Example
FHelp.random(0.5, 10, null)    // => [0.5, 10) 0.5<=x<10 之间的任意数
FHelp.random(0.5, 10, 'floor') // => [0, 9] 0-9 之间的整数
FHelp.random(0.5, 10, 'ceil')  // => [1, 10] 1-10 之间的整数

(static) sayHello()

打印信息

在初始化阶段打印项目信息

Type Definitions

TParam(param) → {K}

有参回调

根据参数 param 返回一个对应的返回值

Parameters:
NameTypeDescription
paramT

参数

Returns:

返回值

Type: 
K