Lodash - 使用默认值获取Path的值

时间:2017-04-11 22:07:51

标签: javascript object lodash

如果没有定义其他路径的回退,是否有办法在路径上获取值?

var object = { a: 1 }

// Try to get d, fallback to e and then a
_.get(object, 'd', _.get(object, 'e', _.get(object, 'a')))

我错过了更好的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以为此创建自己的帮助方法,也许是这样的?

function pickValue(obj, keys, defaultValue) {
  var foundKey = keys.find(function(key) { return obj.hasOwnProperty(key); });
  return foundKey ? obj[foundKey] : defaultValue;
}

用法:

var result = pickValue(obj, ['d', 'e', 'f'], 'default value');

答案 1 :(得分:2)

想想我会这样做,但仍然想看看是否有人使用lodash提出更好的东西。

_.get(object, _.findKey(object, _.rearg(_.partial(_.includes, ['d', 'e', 'f']), 1)))

更新

如果你想找到嵌套路径的密钥,那么上面的代码就不会起作用了:

_(object).at('b', 'c', 'd', 'e', 'a').compact().first()