如果没有定义其他路径的回退,是否有办法在路径上获取值?
var object = { a: 1 }
// Try to get d, fallback to e and then a
_.get(object, 'd', _.get(object, 'e', _.get(object, 'a')))
我错过了更好的方法吗?
答案 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()