常用到方法:
_.get
_set
_.mapValues
_.pick
_.omit
1. _.get(object, path, [defaultValue])
根据 object对象的path路径获取值。 如果解析 value 是 undefined 会以 defaultValue 取代。
参数
object (Object): 要检索的对象。
path (Array|string): 要获取属性的路径。
[defaultValue] (*): 如果解析值是 undefined ,这值会被返回。
返回
(*): 返回解析的值。
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object, 'a[0].b.c');
// => 3
_.get(object, ['a', '0', 'b', 'c']);
// => 3
_.get(object, 'a.b.c', 'default');
// => 'default'
2. _.set(object, path, value)
设置 object对象中对应 path 属性路径上的值,如果path不存在,则创建。 缺少的索引属性会创建为数组,而缺少的属性会创建为对象。 使用 _.setWith 定制path创建。
Note: 这个方法会改变 object
参数
object (Object): 要修改的对象。
path (Array|string): 要设置的对象路径。
value (*): 要设置的值。
返回
(Object): 返回 object。
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.set(object, 'a[0].b.c', 4);
console.log(object.a[0].b.c);
// => 4
_.set(object, ['x', '0', 'y', 'z'], 5);
console.log(object.x[0].y.z);
// => 5
3. _.mapValues(object, [iteratee=_.identity])
创建一个对象,这个对象的key与object对象相同,值是通过 iteratee 运行 object 中每个自身可枚举属性名字符串产生的。 iteratee调用三个参数: (value, key, object)。
参数
object (Object): 要遍历的对象。
[iteratee=_.identity] (Function): 每次迭代时调用的函数。
返回
(Object): 返回映射后的新对象。
var users = {
'fred': { 'user': 'fred', 'age': 40 },
'pebbles': { 'user': 'pebbles', 'age': 1 }
};
_.mapValues(users, function(o) { return o.age; });
// => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
// The `_.property` iteratee shorthand.
_.mapValues(users, 'age');
// => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
4. _.pick(object, [props])
创建一个从 object 中选中的属性的对象。
参数
object (Object): 来源对象。
[props] (…(string|string[])): 要被忽略的属性。(愚人码头注:单独指定或指定在数组中。)
返回
(Object): 返回新对象。
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }
5. _.omit(object, [props])
反向版 _.pick; 这个方法一个对象,这个对象由忽略属性之外的object自身和继承的可枚举属性组成。(愚人码头注:可以理解为删除object对象的属性)。
参数
object (Object): 来源对象。
[props] (…(string|string[])): 要被忽略的属性。(愚人码头注:单独指定或指定在数组中。)
返回
(Object): 返回新对象。
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.omit(object, ['a', 'c']);
// => { 'b': '2' }