Util
_.attempt(func, args)
尝试调用func
,返回结果或捕获的错误对象。func
调用时会提供任何其他参数。
版本
3.0.0
参数
func
(功能):尝试的功能。[args]
(... *):用来调用的参数func
。
返回
(*):返回func
结果或错误对象。
例
//?Avoid?throwing?errors?for?invalid?selectors.
var?elements?=?_.attempt(function(selector)?{
??return?document.querySelectorAll(selector);
},?'>_>');
?
if?(_.isError(elements))?{
??elements?=?[];
}
_.bindAll(object, methodNames)
将对象的方法绑定到对象本身,覆盖现有的方法。
注意:此方法不会设置绑定函数的“length”属性。
以来
0.1.0
参数
object
(Object):绑定的对象并将绑定的方法分配给。methodNames
(...(string | string [])):要绑定的对象方法名称。
Returns
(对象):返回object
。
例
var?view?=?{
??'label':?'docs',
??'click':?function()?{
????console.log('clicked?'?+?this.label);
??}
};
?
_.bindAll(view,?['click']);
jQuery(element).on('click',?view.click);
//?=>?Logs?'clicked?docs'?when?clicked.
_.cond(pairs)
创建一个迭代pairs
并调用第一个谓词的相应函数来返回truthy的函数。谓词函数对this
通过创建的函数的绑定和参数来调用。
以来
4.0.0
参数
pairs
(数组):谓词函数对。
返回
(功能):返回新的复合功能。
例
var?func?=?_.cond([
??[_.matches({?'a':?1?}),???????????_.constant('matches?A')],
??[_.conforms({?'b':?_.isNumber?}),?_.constant('matches?B')],
??[_.stubTrue,??????????????????????_.constant('no?match')]
]);
?
func({?'a':?1,?'b':?2?});
//?=>?'matches?A'
?
func({?'a':?0,?'b':?1?});
//?=>?'matches?B'
?
func({?'a':?'1',?'b':?'2'?});
//?=>?'no?match'
_.conforms(source)
创建一个函数,该函数source
使用给定对象的相应属性值调用谓词属性,true
如果所有谓词都返回truthy,则返回else false
。
注意:所创建的功能相当于_.conformsTo
与source
部分地施加。
以来
4.0.0
参数
source
(Object):属性谓词符合的对象。
返回
(功能):返回新的规格功能。
例
var?objects?=?[
??{?'a':?2,?'b':?1?},
??{?'a':?1,?'b':?2?}
];
?
_.filter(objects,?_.conforms({?'b':?function(n)?{?return?n?>?1;?}?}));
//?=>?[{?'a':?1,?'b':?2?}]
_.constant(value)
创建一个返回的函数value
。
以来
2.4.0
参数
value
(*):从新函数返回的值。
返回
(函数):返回新的常量函数。
例
var?objects?=?_.times(2,?_.constant({?'a':?1?}));
?
console.log(objects);
//?=>?[{?'a':?1?},?{?'a':?1?}]
?
console.log(objects[0]?===?objects[1]);
//?=>?true
_.defaultTo(value, defaultValue)
检查value
以确定是否应该在其位置返回默认值。将defaultValue
返回如果value
是NaN
,null
或undefined
。
以来
4.14.0
参数
value
(*):要检查的值。defaultValue
(*):默认值。
返回
(*):返回已解析的值。
例
_.defaultTo(1,?10);
//?=>?1
?
_.defaultTo(undefined,?10);
//?=>?10
_.flow(funcs)
创建一个函数,该函数返回调用给定函数的结果this
并创建函数的绑定,其中每个连续调用都提供前一个函数的返回值。
以来
3.0.0
参数
[funcs]
(...(Function | Function [])):要调用的函数。
返回
(功能):返回新的复合功能。
例
function?square(n)?{
??return?n?*?n;
}
?
var?addSquare?=?_.flow([_.add,?square]);
addSquare(1,?2);
//?=>?9
_.flowRight(funcs)
这个方法就像_.flow
是它创建一个从右到左调用给定函数的函数。
以来
3.0.0
参数
[funcs]
(...(Function | Function [])):要调用的函数。
返回
(功能):返回新的复合功能。
例
function?square(n)?{
??return?n?*?n;
}
?
var?addSquare?=?_.flowRight([square,?_.add]);
addSquare(1,?2);
//?=>?9
_.identity(value)
这个方法返回它接收到的第一个参数。
以来
0.1.0
参数
value
(*):任何值。
返回
(*):返回value
。
例
var?object?=?{?'a':?1?};
?
console.log(_.identity(object)?===?object);
//?=>?true
_.iteratee(func=_.identity)
创建一个调用func
所创建函数的参数的函数。如果func
是属性名称,则创建的函数将返回给定元素的属性值。如果func
是数组或对象,则创建的函数将返回true
包含等效源属性的元素,否则返回false
。
以来
4.0.0
参数
[func=_.identity]
(*):转换为回调的值。
返回
(功能):返回回调。
例
var?users?=?[
??{?'user':?'barney',?'age':?36,?'active':?true?},
??{?'user':?'fred',???'age':?40,?'active':?false?}
];
?
//?The?`_.matches`?iteratee?shorthand.
_.filter(users,?_.iteratee({?'user':?'barney',?'active':?true?}));
//?=>?[{?'user':?'barney',?'age':?36,?'active':?true?}]
?
//?The?`_.matchesProperty`?iteratee?shorthand.
_.filter(users,?_.iteratee(['user',?'fred']));
//?=>?[{?'user':?'fred',?'age':?40?}]
?
//?The?`_.property`?iteratee?shorthand.
_.map(users,?_.iteratee('user'));
//?=>?['barney',?'fred']
?
//?Create?custom?iteratee?shorthands.
_.iteratee?=?_.wrap(_.iteratee,?function(iteratee,?func)?{
??return?!_.isRegExp(func)???iteratee(func)?:?function(string)?{
????return?func.test(string);
??};
});
?
_.filter(['abc',?'def'],?/ef/);
//?=>?['def']
_.matches(source)
创建一个函数,用于在给定对象之间执行部分深层比较source
, true
如果给定对象具有等效属性值,则返回其他值 false
。
注意:所创建的功能相当于_.isMatch
与source
部分地施加。
部分比较将分别将空数组和空对象source
值与任何数组或对象值匹配 。请参阅_.isEqual
支持的值比较列表。
以来
3.0.0
参数
source
(Object):要匹配的属性值的对象。
返回
(功能):返回新的规格功能。
例
var?objects?=?[
??{?'a':?1,?'b':?2,?'c':?3?},
??{?'a':?4,?'b':?5,?'c':?6?}
];
?
_.filter(objects,?_.matches({?'a':?4,?'c':?6?}));
//?=>?[{?'a':?4,?'b':?5,?'c':?6?}]
_.matchesProperty(path, srcValue)
创建一个函数,用于在path
给定对象的at值处执行部分深层比较srcValue
,true
如果对象值相等,则返回else false
。
注:部分比较将分别将空数组和空对象srcValue
值与任何数组或对象值匹配。请参阅_.isEqual
支持的值比较列表。
以来
3.2.0
参数
path
(Array | string):要获取的属性的路径。srcValue
(*):要匹配的值。
返回
(功能):返回新的规格功能。
例
var?objects?=?[
??{?'a':?1,?'b':?2,?'c':?3?},
??{?'a':?4,?'b':?5,?'c':?6?}
];
?
_.find(objects,?_.matchesProperty('a',?4));
//?=>?{?'a':?4,?'b':?5,?'c':?6?}
_.method(path, args)
创建一个调用path
给定对象的方法的函数。任何额外的参数被提供给被调用的方法。
以来
3.7.0
参数
path
(Array | string):要调用的方法的路径。[args]
(... *):用来调用方法的参数。
返回
(函数):返回新的调用函数。
例
var?objects?=?[
??{?'a':?{?'b':?_.constant(2)?}?},
??{?'a':?{?'b':?_.constant(1)?}?}
];
?
_.map(objects,?_.method('a.b'));
//?=>?[2,?1]
?
_.map(objects,?_.method(['a',?'b']));
//?=>?[2,?1]
_.methodOf(object, args)
与之相反_.method
; 这个方法创建一个函数调用给定路径的方法object
。任何额外的参数被提供给被调用的方法。
以来
3.7.0
参数
object
(Object):要查询的对象。[args]
(... *):用来调用方法的参数。
返回
(函数):返回新的调用函数。
例
var?array?=?_.times(3,?_.constant),
????object?=?{?'a':?array,?'b':?array,?'c':?array?};
?
_.map(['a[2]',?'c[0]'],?_.methodOf(object));
//?=>?[2,?0]
?
_.map([['a',?'2'],?['c',?'0']],?_.methodOf(object));
//?=>?[2,?0]
_.mixin(object=lodash, source, options={})
将源对象的所有可枚举字符串键控函数属性添加到目标对象。如果object
是一个函数,那么方法也会添加到它的原型中。
注意:使用_.runInContext
创造一个纯净的lodash
功能,以避免因修改原始的冲突。
以来
0.1.0
参数
[object=lodash]
(函数|对象):目标对象。source
(Object):要添加的函数的对象。[options={}]
(对象):选项对象。[options.chain=true]
(boolean):指定mixin是否可链接。
返回
(*):返回object
。
例
function?vowels(string)?{
??return?_.filter(string,?function(v)?{
????return?/[aeiou]/i.test(v);
??});
}
?
_.mixin({?'vowels':?vowels?});
_.vowels('fred');
//?=>?['e']
?
_('fred').vowels().value();
//?=>?['e']
?
_.mixin({?'vowels':?vowels?},?{?'chain':?false?});
_('fred').vowels();
//?=>?['e']
_.noConflict()
将_
变量恢复为其先前的值并返回对该lodash
函数的引用。
以来
0.1.0
返回
(功能):返回lodash
功能。
例
var?lodash?=?_.noConflict();
_.noop()
此方法返回undefined
。
以来
2.3.0
例
_.times(2,?_.noop);
//?=>?[undefined,?undefined]
_.nthArg(n=0)
创建一个在索引处获取参数的函数n
。如果n
是负数,则返回从结尾开始的第n个参数。
以来
4.0.0
参数
[n=0]
(数字):返回参数的索引。
返回
(功能):返回新的传递函数。
例
var?func?=?_.nthArg(1);
func('a',?'b',?'c',?'d');
//?=>?'b'
?
var?func?=?_.nthArg(-2);
func('a',?'b',?'c',?'d');
//?=>?'c'
_.over([iteratees=_.identity])
创建一个函数,iteratees
用它接收的参数调用并返回它们的结果。
以来
4.0.0
参数
[iteratees=[_.identity]]
(...(Function | Function [])):要调用的迭代。
返回
(功能):返回新功能。
例
var?func?=?_.over([Math.max,?Math.min]);
?
func(1,?2,?3,?4);
//?=>?[4,?1]
_.overEvery([predicates=_.identity])
如果创建一个检查函数所有的的predicates
时候用它接收到的参数调用返回truthy。
以来
4.0.0
参数
[predicates=[_.identity]]
(...(Function | Function [])):要检查的谓词。
返回
(功能):返回新功能。
例
var?func?=?_.overEvery([Boolean,?isFinite]);
?
func('1');
//?=>?true
?
func(null);
//?=>?false
?
func(NaN);
//?=>?false
_.overSome([predicates=_.identity])
如果创建一个检查功能的任何的的predicates
时候用它接收到的参数调用返回truthy。
以来
4.0.0
参数
[predicates=[_.identity]]
(...(Function | Function [])):要检查的谓词。
返回
(功能):返回新功能。
例
var?func?=?_.overSome([Boolean,?isFinite]);
?
func('1');
//?=>?true
?
func(null);
//?=>?true
?
func(NaN);
//?=>?false
_.property(path)
创建一个返回path
给定对象的值的函数。
以来
2.4.0
参数
path
(Array | string):要获取的属性的路径。
返回
(函数):返回新的存取函数。
例
var?objects?=?[
??{?'a':?{?'b':?2?}?},
??{?'a':?{?'b':?1?}?}
];
?
_.map(objects,?_.property('a.b'));
//?=>?[2,?1]
?
_.map(_.sortBy(objects,?_.property(['a',?'b'])),?'a.b');
//?=>?[1,?2]
_.propertyOf(object)
与之相反_.property
; 这个方法创建一个函数,返回给定路径的值object
。
以来
3.0.0
参数
object
(Object):要查询的对象。
返回
(函数):返回新的存取函数。
例
var?array?=?[0,?1,?2],
????object?=?{?'a':?array,?'b':?array,?'c':?array?};
?
_.map(['a[2]',?'c[0]'],?_.propertyOf(object));
//?=>?[2,?0]
?
_.map([['a',?'2'],?['c',?'0']],?_.propertyOf(object));
//?=>?[2,?0]
_.range(start=0, end, step=1)
创建一个从最高到但不包括的数字(正数和/或负数)。如果在没有or的情况下指定否定,则使用步骤。如果未指定,则设置为, 然后设置为。startend-1startendstependstartstart0
注意: JavaScript遵循IEEE-754标准来解决可能产生意外结果的浮点值。
以来
0.1.0
参数
[start=0]
(数字):范围的开始。end
(数字):范围的结尾。[step=1]
(数字):通过增加或减少的值。
返回
(数组):返回数字的范围。
例
_.range(4);
//?=>?[0,?1,?2,?3]
?
_.range(-4);
//?=>?[0,?-1,?-2,?-3]
?
_.range(1,?5);
//?=>?[1,?2,?3,?4]
?
_.range(0,?20,?5);
//?=>?[0,?5,?10,?15]
?
_.range(0,?-4,?-1);
//?=>?[0,?-1,?-2,?-3]
?
_.range(1,?4,?0);
//?=>?[1,?1,?1]
?
_.range(0);
//?=>?[]
_.rangeRight(start=0, end, step=1)
这种方法就像_.range
它以降序的方式填充值。
以来
4.0.0
参数
[start=0]
(数字):范围的开始。end
(数字):范围的结尾。[step=1]
(数字):通过增加或减少的值。
返回
(数组):返回数字的范围。
Example
_.rangeRight(4);
//?=>?[3,?2,?1,?0]
?
_.rangeRight(-4);
//?=>?[-3,?-2,?-1,?0]
?
_.rangeRight(1,?5);
//?=>?[4,?3,?2,?1]
?
_.rangeRight(0,?20,?5);
//?=>?[15,?10,?5,?0]
?
_.rangeRight(0,?-4,?-1);
//?=>?[-3,?-2,?-1,?0]
?
_.rangeRight(1,?4,?0);
//?=>?[1,?1,?1]
?
_.rangeRight(0);
//?=>?[]
_.runInContext(context=root)
lodash
使用该context
对象创建一个新的原始功能。
以来
1.1.0
参数
[context=root]
(Object):上下文对象。
返回
(功能):返回一个新lodash
功能。
例
_.mixin({?'foo':?_.constant('foo')?});
?
var?lodash?=?_.runInContext();
lodash.mixin({?'bar':?lodash.constant('bar')?});
?
_.isFunction(_.foo);
//?=>?true
_.isFunction(_.bar);
//?=>?false
?
lodash.isFunction(lodash.foo);
//?=>?false
lodash.isFunction(lodash.bar);
//?=>?true
?
//?Create?a?suped-up?`defer`?in?Node.js.
var?defer?=?_.runInContext({?'setTimeout':?setImmediate?}).defer;
_.stubArray()
此方法返回一个新的空数组。
以来
4.13.0
返回
(数组):返回新的空数组。
例
var?arrays?=?_.times(2,?_.stubArray);
?
console.log(arrays);
//?=>?[[],?[]]
?
console.log(arrays[0]?===?arrays[1]);
//?=>?false
_.stubFalse()
此方法返回false
。
以来
4.13.0
返回
(布尔):返回false
。
例
_.times(2,?_.stubFalse);
//?=>?[false,?false]
_.stubObject()
此方法返回一个新的空对象。
以来
4.13.0
返回
(Object):返回新的空对象。
例
var?objects?=?_.times(2,?_.stubObject);
?
console.log(objects);
//?=>?[{},?{}]
?
console.log(objects[0]?===?objects[1]);
//?=>?false
_.stubString()
这个方法返回一个空字符串。
以来
4.13.0
返回
(字符串):返回空字符串。
例
_.times(2,?_.stubString);
//?=>?['',?'']
_.stubTrue()
此方法返回true
。
以来
4.13.0
返回
(布尔):返回true
。
例
_.times(2,?_.stubTrue);
//?=>?[true,?true]
_.times(n, iteratee=_.identity)
调用迭代n
次数,返回每个调用结果的数组。迭代器被调用一个参数; (指数)。
以来
0.1.0
参数
n
(数字):调用的次数iteratee
。[iteratee=_.identity]
(Function):每次迭代调用的函数。
返回
(数组):返回结果数组。
例
_.times(3,?String);
//?=>?['0',?'1',?'2']
?
?_.times(4,?_.constant(0));
//?=>?[0,?0,?0,?0]
_.toPath(value)
转换value
为属性路径数组。
以来
4.0.0
参数
value
(*):要转换的值。
返回
(Array):返回新的属性路径数组。
例
_.toPath('a.b.c');
//?=>?['a',?'b',?'c']
?
_.toPath('a[0].b.c');
//?=>?['a',?'0',?'b',?'c']
_.uniqueId(prefix='')
生成一个唯一的ID。如果prefix
给出,则ID附加到它。
以来
0.1.0
参数
[prefix='']
(字符串):用ID作为ID前缀的值。
返回
(字符串):返回唯一的ID。
例
_.uniqueId('contact_');
//?=>?'contact_104'
?
_.uniqueId();
//?=>?'105'
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com