Lodash 对象类精选
一、取路径值为数组 _.at
_.at(object, [paths])
参数
object
(Object): 要迭代的对象。paths
(...(string|string[])): 要获取的对象的元素路径,单独指定或者指定在数组中。返回
- (Array): 返回选中值的数组。
创建一个数组,值来自 object
的 paths
路径相应的值。
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
_.at(object, ['a[0].b.c', 'a[1]']);
// => [3, 4]
二、分配并合并 _.defaults
_.defaults(object, [sources])
参数
object
(Object): 目标对象。sources
(...Object): 来源对象。返回
- (Object): 返回 object。
_.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
// => { 'a': 1, 'b': 2 }
三、遍历对象 _.forIn
_.forIn(object, [iteratee=_.identity])
参数
object
(Object): 要遍历的对象。iteratee
(Function): 每次迭代时调用的函数。返回
- (Object): 返回 object。
使用 iteratee
遍历对象的自身和继承的可枚举属性。
iteratee
会传入3个参数:_(value, key, object)_
如果返回 false,iteratee
会提前退出遍历。
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forIn(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'a', 'b', then 'c' (无法保证遍历的顺序)
四、取路径值 _.get
_.get(object, path, [defaultValue])
参数
object
(Object): 要检索的对象。path
(Array|string): 要获取属性的路径。defaultValue
(*): 如果解析值是 undefined ,这值会被返回。返回
- (*): 返回解析的值。
根据 object
对象的 path
路径获取值。如果解析 value 是 undefined
会以 defaultValue
取代。
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'
五、是否存在路径 _.has
_.has(object, path)
参数
object
(Object): 要检索的对象。path
(Array|string): 要检查的路径path。返回
- (boolean): 如果path存在,那么返回 true ,否则返回 false。
检查 path
是否是 object
对象的直接属性。
var object = { 'a': { 'b': 2 } };
var other = _.create({ 'a': _.create({ 'b': 2 }) });
_.has(object, 'a');
// => true
_.has(object, 'a.b');
// => true
_.has(object, ['a', 'b']);
// => true
_.has(other, 'a');
// => false
六、移除路径 _.unset
_.unset(object, path)
参数
object
(Object): 要修改的对象。path
(Array|string): 要移除的对象路径。返回
- (boolean): 如果移除成功,那么返回 true ,否则返回 false。
移除 object
对象 path
路径上的属性。
var object = { 'a': [{ 'b': { 'c': 7 } }] };
_.unset(object, 'a[0].b.c');
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };
_.unset(object, ['a', '0', 'b', 'c']);
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };