Skip to main content

Lodash 对象类精选

一、取路径值为数组 _.at

_.at(object, [paths])

参数

  • object (Object): 要迭代的对象。
  • paths (...(string|string[])): 要获取的对象的元素路径,单独指定或者指定在数组中。

返回

  • (Array): 返回选中值的数组。

创建一个数组,值来自 objectpaths 路径相应的值。

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': {} }] };