发布于 2016-01-14 09:38:43 | 239 次阅读 | 评论: 0 | 来源: PHPERZ
lodash JavaScript 实用工具库
lodash 是一个 JavaScript 实用工具库,提供一致性,模块化,性能和配件等功能。
Translated by PeckZeg
Original Docs: Lodash v3.10.1 Docs
_.clone(value, [isDeep], [customizer], [thisArg])
创建一个 value
的克隆。如果 isDeep
为 true
,则嵌套对象也会被克隆,否则,其将被赋值为引用对象。如果指定了 customizer
,那么其将被用来调用提供克隆的值。如果 customizer
返回 undefined
,克隆过程将被方法本身代替。customizer
绑定 thisArg
,并在执行时最多传入三个参数:value
, [index|key]
, [object]
。
注意:该方法基于 结构化克隆算法。arguments
对象的可枚举属性和构造函数创建的对象不同于被源生 Object
克隆出的 Object
。不可克隆的值如函数、DOM 结点、映射、结合 和弱映射将会返回空对象。
参数
value
(*) : 待克隆的值
[isDeep]
(boolean) : 指定是否深度克隆
[customizer]
(Function) : 克隆值的定制器函数
[thisArg]
(*) : customizer
绑定的 this
返回
(*) : 返回克隆的值
示例
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
var shallow = _.clone(users);
shallow[0] === users[0];
// → true
var deep = _.clone(users, true);
deep[0] === users[0];
// → false
// 使用定制回调函数
var el = _.clone(document.body, function(value) {
if (_.isElement(value)) {
return value.cloneNode(false);
}
});
el === document.body
// → false
el.nodeName
// → BODY
el.childNodes.length;
// → 0
_.cloneDeep(value, [customizer], [thisArg])
创建一个深度克隆对象。如果指定了 customizer
,那么其将被用来调用提供克隆的值。如果 customizer
返回 undefined
,克隆过程将被方法本身代替。customizer
绑定 thisArg
,并在执行时最多传入三个参数:value
, [index|key]
, [object]
。
注意:该方法基于 结构化克隆算法。arguments
对象的可枚举属性和构造函数创建的对象不同于被源生 Object
克隆出的 Object
。不可克隆的值如函数、DOM 结点、映射、结合 和弱映射将会返回空对象。
参数
value
(*) : 待深度克隆的值
[customizer]
(Function) : 克隆值的定制器函数
[thisArg]
(*) : customizer
绑定的 this
返回
(*) : 返回深度克隆值
示例
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
var deep = _.cloneDeep(users);
deep[0] === users[0];
// → false
// 使用定制器回调函数
var el = _.cloneDeep(document.body, function(value) {
if (_.isElement(value)) {
return value.cloneNode(true);
}
});
el === document.body
// → false
el.nodeName
// → BODY
el.childNodes.length;
// → 20
_.gt(value, other)
检查 value
是否大于 other
。
参数
value
(*) : 待比较的值
other
(*) : 另一个待比较的值
返回
(boolean) : value
大于 other
时返回 true
,否则返回 false
示例
_.gt(3, 1);
// → true
_.gt(3, 3);
// → false
_.gt(1, 3);
// → false
_.gte(value, other)
检查 value
是否大于等于 other
。
参数
value
(*) : 待比较的值
other
(*) : 另一个待比较的值
返回
(boolean) : value
大于等于 other
时返回 true
,否则返回 false
示例
_.gte(3, 1);
// → true
_.gte(3, 3);
// → true
_.gte(1, 3);
// → false
_.isArguments(value)
检查 value
是否被列为参数。
参数
value
(*) : 待检查的值
返回
(boolean) : value
被列为参数则返回 true
,否则返回 false
示例
_.isArguments(function() { return arguments; }());
// → true
_.isArguments([1, 2, 3]);
// → false
_.isArray(value)
检查 value
是否被列为数组对象。
参数
value
(*) : 待检查的值
返回
(boolean) : 如果 value
为正确的分类返回 true
,否则则返回 false
示例
_.isArray([1, 2, 3]);
// → true
_.isArray(function() { return arguments; }());
// → false
_.isBoolean(value)
检查 value
是否被列为原始布尔值或布尔值对象。
参数
value
(*) : 待检查的值
返回
(boolean) : value
被正确归类时返回 true
,否则返回 false
示例
_.isBoolean(false);
// → true
_.isBoolean(null);
// → false
_.isDate(value)
检查 value
是否被列为 Date
对象。
参数
value
(*) : 待检查的值
返回
(boolean) : value
被正确归类时返回 true
,否则返回 false
示例
_.isDate(new Date);
// → true
_.isDate('Mon April 23 2012');
// → false
_.isElement(value)
检查 value
是否为 DOM 元素。
参数
value
(*) : 待检查的值
返回
(boolean) : value
为 DOM 元素时返回 true
,否则返回 false
示例
_.isElement(document.body);
// → true
_.isElement('<body>');
// → false
_.isEmpty(value)
检查 value
是否为空。除了 arguments
对象、数组、字符串或 类 jQuery 集合的 length
值大于 0
或者对象拥有可枚举属性时,其他情况会把值考虑为空。
参数
value
(Array|Object|string) : 待检查的值
返回
(boolean) : value
为空时返回 true
,否则返回 false
示例
_.isEmpty(null);
// → true
_.isEmpty(true);
// → true
_.isEmpty(1);
// → true
_.isEmpty([1, 2, 3]);
// → false
_.isEmpty({ 'a': 1 });
// → false
_.isEqual(value, other, [customizer], [thisArg])
在两个值之间进行深度比较以确定它们是否相等。如果提供了 customizer
,其将被用来执行比较两个值。如果 customizer
返回 undefined
,那么比较过程被方法本身代替。customizer
绑定 thisArg
并在执行时最多传入三个值:value
, other
, index|key
。
注意:该方法支持比较数组、布尔值、Date
对象,数值,Object
对象,正则表达式和字符串。对象间比较其自有值而非内置值。不支持比较函数和 DOM 结点。提供一个定制器函数用来扩展比较其他值的支持。
别名
_.eq
参数
value
(*) : 待比较的值
other
(*) : 另一个待比较的值
[customizer]
(Function) : 定制比较值的函数
[thisArg]
(*) : customizer
绑定的 this
返回
(boolean) : 如果值之间相等时返回 true
,否则返回 false
示例
var object = { 'user': 'fred' };
var other = { 'user': 'fred' };
object == other;
// → false
_.isEqual(object, other);
// → true
// using a customizer callback
var array = ['hello', 'goodbye'];
var other = ['hi', 'goodbye'];
_.isEqual(array, other, function(value, other) {
if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {
return true;
}
});
// → true
_.isError(value)
检查值是否为 Error
、 EvalError
、 RangeError
、 ReferenceError
、 SyntaxError
、 TypeError
或 URIError
对象。
参数
value
(*) : 待检查的值
返回
(boolean) : value
为错误对象时返回 true
,否则返回 false
示例
_.isError(new Error);
// → true
_.isError(Error);
// → false
_.isFinite(value)
检查 value
是否为原始无限数值。
注意:该方法基于 Number.isFinite
。
参数
value
(*) : 待检查的值
返回
(boolean) : value
为无限数值返回 true
,否则返回 false
。
示例
_.isFinite(10);
// → true
_.isFinite('10');
// → false
_.isFinite(true);
// → false
_.isFinite(Object(10));
// → false
_.isFinite(Infinity);
// → false
_.isFunction(value)
检查 value
是否被列为函数对象。
参数
value
(*) : 待检查的值
返回
(boolean) : value
被正确归类时返回 true
,否则返回 false
示例
_.isFunction(_);
// → true
_.isFunction(/abc/);
// → false
_.isMatch(object, source, [customizer], [thisArg])
在 object
与 source
之间执行深度比较,以决定 object
是否包含相等的属性值。如果提供了 customizer
,其将被用来执行比较两个值。如果 customizer
返回 undefined
,那么比较过程被方法本身代替。customizer
绑定 thisArg
并在执行时最多传入三个值:value
, other
, index|key
。
注意:该方法支持比较数组的属性、布尔值、Date
对象,数值、Object
对象,正则表达式和数值。不支持比较函数和 DOM 结点。提供一个定制器函数用来扩展比较其他值的支持。
参数
object
(Object) : 待检查的值
source
(Object) : 待匹配的属性值的对象
[customizer]
(Function) : 定制比较值的函数
[thisArg]
(*) : customizer
绑定的 this
返回
(boolean) : 如果 object
匹配返回 true
,否则返回 false
示例
var object = { 'user': 'fred', 'age': 40 };
_.isMatch(object, { 'age': 40 });
// → true
_.isMatch(object, { 'age': 36 });
// → false
// 使用定制器回调函数
var object = { 'greeting': 'hello' };
var source = { 'greeting': 'hi' };
_.isMatch(object, source, function(value, other) {
return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;
});
// → true
_.isNaN(value)
检查 value
是否为 NaN
(非数值)。
注意:该方法与 isNaN不同,对 undefined
和其他非数值都返回 true
参数
value
(*) : 待检查的值
返回
(boolean) : 如果 value
为 NaN
返回 true
,否则返回 false
示例
_.isNaN(NaN);
// → true
_.isNaN(new Number(NaN));
// → true
isNaN(undefined);
// → true
_.isNaN(undefined);
// → false
_.isNative(value)
检查 value
是否为原生函数。
参数
value
(*) : 待检查的值
返回
(boolean) : value
为原生函数时返回 true
,否则返回 false
示例
_.isNative(Array.prototype.push);
// → true
_.isNative(_);
// → false
_.isNull(value)
检查 value
是否为 null
。
参数
value
(*) : 待检查的值
返回
(boolean) : value
为 null
时返回 true
,否则返回 false
示例
_.isNull(null);
// → true
_.isNull(void 0);
// → false
_.isNumber(value)
检查 value
是否被指定为 Number
字面量或对象。
注意:如果要排除被指定为数值的 Infinity
、-Infinity
和 NaN
,使用 _.isFinite
方法。
参数
value
(*) : 待检查的值
返回
(boolean) : value
正确被归类时返回 true
,否则返回 false
示例
_.isNumber(8.4);
// → true
_.isNumber(NaN);
// → true
_.isNumber('8.4');
// → false
_.isObject(value)
检查 value
是否为 Object
语言类型。(例:数组、函数、对象、正则表达式,new Number(0)
和 new String('')
)
参数
value
(*) : 待检查的值
返回
(boolean) : value
为对象时返回 true
,否则返回 false
示例
_.isObject({});
// → true
_.isObject([1, 2, 3]);
// → true
_.isObject(1);
// → false
_.isPlainObject(value)
检查 value
是否为一个纯粹的对象,纯粹的对象就是使用 Object
构造器创建的对象或一个 [[Prototype]]
为 null
的对象。
注意:该方法假定由 Object
构造器创建的对象没有内置可枚举属性。
参数
value
(*) : 待检查的值
返回
(boolean) : value
是纯粹的对象则返回 true
,否则返回 false
示例
function Foo() {
this.a = 1;
}
_.isPlainObject(new Foo);
// → false
_.isPlainObject([1, 2, 3]);
// → false
_.isPlainObject({ 'x': 0, 'y': 0 });
// → true
_.isPlainObject(Object.create(null));
// → true
_.isRegExp(value)
检查 value
是否被指定为 RegExp
对象。
参数
value
(*) : 待检查的值
返回
(boolean) : value
被正确归类时返回 true
,否则返回 false
示例
_.isRegExp(/abc/);
// → true
_.isRegExp('/abc/');
// → false
_.isString(value)
检查 value
是否被归类为 String
字面量或对象。
参数
value
(*) : 待检查的值
返回
(boolean) : value
被正确归类时返回 true
,否则返回 false
示例
_.isString('abc');
// → true
_.isString(1);
// → false
_.isTypedArray(value)
检查 value
是否被归类为类型数组。
参数
value
(*) : 待检查的值
返回
(boolean) : value
被正确归类时返回 true
,否则返回 false
示例
_.isTypedArray(new Uint8Array);
// → true
_.isTypedArray([]);
// → false
_.isUndefined(value)
检查 value
是否为 undefined
。
参数
value
(*) : 待检查的值
返回
(boolean) : value
为 undefined
时返回 true
,否则返回 false
示例
_.isUndefined(void 0);
// → true
_.isUndefined(null);
// → false
_.lt(value, other)
检查 value
是否小于 other
。
参数
value
(*) : 待比较的值
other
(*) : 另一个待比较的值
返回
(boolean) : value
比 other
小时返回 true
,否则返回 false
示例
_.lt(1, 3);
// → true
_.lt(3, 3);
// → false
_.lt(3, 1);
// → false
_.lte(value, other)
检查 value
是否小于等于 other
。
参数
value
(*) : 待比较的值
other
(*) : 另一个待比较的值
返回
(boolean) : value
小于或等于other
时返回 true
,否则返回 false
示例
_.lte(1, 3);
// → true
_.lte(3, 3);
// → true
_.lte(3, 1);
// → false
_.toArray(value)
将 value
转换为数组。
参数
value
_(*)_: 待转换的值
返回
(Array) : 返回转换后的数组
示例
(function() {
return _.toArray(arguments).slice(1);
}(1, 2, 3));
// → [2, 3]
_.toPlainObject(value)
转换 value
为纯粹的对象,该方法会将 value
的内置可枚举对象转换为纯粹的对象的自有属性。
参数
value
(*) : 待转换的值
返回
(Object) : 返回已转换的纯粹的对象
示例
function Foo() {
this.b = 2;
}
Foo.prototype.c = 3;
_.assign({ 'a': 1 }, new Foo);
// → { 'a': 1, 'b': 2 }
_.assign({ 'a': 1 }, _.toPlainObject(new Foo));
// → { 'a': 1, 'b': 2, 'c': 3 }