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}
說明:extend函數是直接改動destination參數的,通過以下代碼非常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"}
說明:這個函數和extend非常類似,假設destination和source中屬性名沒有反復,那么2個函數的功能是全然一致的。
區別在于:當屬性名有同名的時候,extend直接用source中的值覆蓋掉destination中的值;而defaults則會依據destination中的屬性值是否為undefined區別對待。
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

 APP
 APP 