keys_.keys(object)
?
Retrieve all the names of the?object's properties.
_.keys({one: 1, two: 2, three: 3}); => ["one", "two", "three"]
values_.values(object)
?
Return all of the values of the?object's properties.
_.values({one: 1, two: 2, three: 3}); => [1, 2, 3]
pairs_.pairs(object)
?
Convert an object into a list of?[key, value]?pairs.
_.pairs({one: 1, two: 2, three: 3}); => [["one", 1], ["two", 2], ["three", 3]]
invert_.invert(object)
?
Returns a copy of the?object?where the keys have become the values and the values the keys. For this to work, all of your object's values should be unique and string serializable.
_.invert({Moe: "Moses", Larry: "Louis", Curly: "Jerome"}); => {Moses: "Moe", Louis: "Larry", Jerome: "Curly"};
functions_.functions(object)
?Alias:?methods?
Returns a sorted list of the names of every method in an object — that is to say, the name of every function property of the object.
_.functions(_); => ["all", "any", "bind", "bindAll", "clone", "compact", "compose" ...
extend_.extend(destination,
*sources)
?
Copy all of the properties in the?source?objects over to the?destination?object, and return the?destination?object. It's in-order, so the last source will override properties of the same name in previous arguments.
_.extend({name: 'moe'}, {age: 50}); => {name: 'moe', age: 50}說(shuō)明:extend函數(shù)是直接改動(dòng)destination參數(shù)的,通過(guò)以下代碼非常easy證明
var destination = {name: 'moe'}; var source = {age: 50} _.extend(destination, source); console.log("extend="+destination.age);//50
pick_.pick(object,
*keys)
?
Return a copy of the?object, filtered to only have values for the whitelisted(白名單)?keys?(or array of valid keys). Alternatively accepts a predicate indicating which keys to pick.
_.pick({name: 'moe', age: 50, userid: 'moe1'}, 'name', 'age');
=> {name: 'moe', age: 50}
_.pick({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
return _.isNumber(value);
});
=> {age: 50}
omit_.omit(object,
*keys)
?
Return a copy of the?object, filtered to omit the blacklisted(黑名單)?keys?(or array of keys). Alternatively accepts a predicate indicating which keys to omit.
_.omit({name: 'moe', age: 50, userid: 'moe1'}, 'userid'); => {name: 'moe', age: 50} _.omit({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) { return _.isNumber(value); }); => {name: 'moe', userid: 'moe1'}
defaults_.defaults(object,
*defaults)
?
Fill in?undefined?properties in?object?with the
first value present in the following list ofdefaults?objects.
var iceCream = {flavor: "chocolate"}; _.defaults(iceCream, {flavor: "vanilla", sprinkles: "lots"}); => {flavor: "chocolate", sprinkles: "lots"}說(shuō)明:這個(gè)函數(shù)和extend非常類似,假設(shè)destination和source中屬性名沒(méi)有反復(fù),那么2個(gè)函數(shù)的功能是全然一致的。
區(qū)別在于:當(dāng)屬性名有同名的時(shí)候,extend直接用source中的值覆蓋掉destination中的值;而defaults則會(huì)依據(jù)destination中的屬性值是否為undefined區(qū)別對(duì)待。
var iceCream = {flavor: "chocolate",sprinkles:undefined}; _.defaults(iceCream, {flavor: "vanilla", sprinkles: "lots"}); console.log("iceCream=" + iceCream.flavor);//chocolate console.log("sprinkles=" + iceCream.sprinkles);//lots
clone_.clone(object)
?
Create a shallow-copied(淺拷貝) clone of the?object. Any nested objects or arrays will be copied by reference, not duplicated.
_.clone({name: 'moe'});
=> {name: 'moe'};
tap_.tap(object,
interceptor)
?
Invokes?interceptor?with the?object, and then returns?object. The primary purpose of this method is to "tap into" a method chain, in order to perform operations on intermediate results within the chain.
_.chain([1,2,3,200]) .filter(function(num) { return num % 2 == 0; }) .tap(alert) .map(function(num) { return num * num }) .value(); => // [2, 200] (alerted) => [4, 40000]
has_.has(object,
key)
?
Does the object contain the given key? Identical to?object.hasOwnProperty(key),
but uses a safe reference to the?hasOwnProperty?function, in
case it's been?overridden accidentally.
_.has({a: 1, b: 2, c: 3}, "b"); => true
property_.property(key)
?
Returns a function that will itself return the?key?property of
any passed-in object.
var moe = {name: 'moe'}; 'moe' === _.property('name')(moe); => true
matches_.matches(attrs)
?
Returns a predicate function that will tell you if a passed in object contains all of the key/value properties present in?attrs.
var ready = _.matches({selected: true, visible: true}); var readyToGoList = _.filter(list, ready);
isEqual_.isEqual(object,
other)
?
Performs an optimized deep comparison between the two objects, to determine if they should be considered equal.
var moe = {name: 'moe', luckyNumbers: [13, 27, 34]}; var clone = {name: 'moe', luckyNumbers: [13, 27, 34]}; moe == clone; => false _.isEqual(moe, clone); => true
isEmpty_.isEmpty(object)
?
Returns?true?if an enumerable?object?contains no values (no enumerable own-properties). For strings and array-like objects?_.isEmpty?checks
if the length property is 0.
_.isEmpty([1, 2, 3]); => false _.isEmpty({}); => true
isElement_.isElement(object)
?
Returns?true?if?object?is a DOM element.
_.isElement(jQuery('body')[0]); => true
isArray_.isArray(object)
?
Returns?true?if?object?is an Array.
(function(){ return _.isArray(arguments); })(); => false _.isArray([1,2,3]); => true
isObject_.isObject(value)
?
Returns?true?if?value?is an Object. Note that JavaScript arrays and functions are objects, while (normal) strings and numbers are not.
_.isObject({}); => true _.isObject(1); => false
isArguments_.isArguments(object)
?
Returns?true?if?object?is an Arguments object.
(function(){ return _.isArguments(arguments); })(1, 2, 3); => true _.isArguments([1,2,3]); => false
isFunction_.isFunction(object)
?
Returns?true?if?object?is a Function.
_.isFunction(alert); => true
isString_.isString(object)
?
Returns?true?if?object?is a String.
_.isString("moe"); => true
isNumber_.isNumber(object)
?
Returns?true?if?object?is a Number (including?NaN).
_.isNumber(8.4 * 5); => true
isFinite_.isFinite(object)
?
Returns?true?if?object?is a finite Number.
_.isFinite(-101); => true _.isFinite(-Infinity); => false
isBoolean_.isBoolean(object)
?
Returns?true?if?object?is either?true?or?false.
_.isBoolean(null); => false
isDate_.isDate(object)
?
Returns?true?if?object?is a Date.
_.isDate(new Date()); => true
isRegExp_.isRegExp(object)
?
Returns?true?if?object?is a RegExp.
_.isRegExp(/moe/); => true
isNaN_.isNaN(object)
?
Returns?true?if?object?is?NaN.
Note: this is not the same as the native?isNaN?function, which will also return true for many other not-number values, such as?undefined.
_.isNaN(NaN); => true isNaN(undefined); => true _.isNaN(undefined); => false
isNull_.isNull(object)
?
Returns?true?if the value of?object?is?null.
_.isNull(null); => true _.isNull(undefined); => false
isUndefined_.isUndefined(value)
?
Returns?true?if?value?is?undefined.
_.isUndefined(window.missingVariable); => true
本文摘自 :https://blog.51cto.com/u