javascript - 相当于 Lodash _.get 和 _.has 的下划线

标签 javascript underscore.js lodash

我正在尝试为 Lodash _.get_.has 搜索等效的 Underscore,它能够直接访问嵌套对象的存在和值值而不需要检查其 parent 的存在。

但是,在我看来,下划线 _.get_.has 只能检查第一级的值。

var object = { 'a': { 'b': 2 } };
_.has(object, 'a.b'); // lodash shows true
_.has(object, 'a.b'); // underscore shows false

最佳答案

据我所知,undercore 不执行深度搜索,因此您必须满足于浅层 hasget(或更改为 lodash) .

你也可以尝试自己实现(你可以查看lodash的实现并尝试复制它或者想出你自己的解决方案)。

这是has 问题的简单解决方案(get 类似),使用递归和当前下划线has 的实现.

希望对您有所帮助。

var a = {
  a: 1,
  b: {
    a: { c: { d: 1 }}
  }
};

var hasDeep = function(obj, path) {
  if(!path) return true;
  
  var paths = path.split('.'),
    nPath = _.first(paths);
  return _.has(obj, nPath) && hasDeep(obj[nPath], _.rest(paths).join('.'));
}

console.log(hasDeep(a, 'b.a.c.d'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>

关于javascript - 相当于 Lodash _.get 和 _.has 的下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42042245/

相关文章:

javascript - 指定 javascript 字符串分割大小

javascript - 是否调用去抖方法的 Angular 条件 watch 不起作用

javascript - 使用下划线链将 2 个对象的属性值合并到一个数组中

javascript - _.findIndex() 总是返回 -1 (lodash.js)

Javascript:最近5分钟的回合时间

javascript - NodeJS Express 函数未定义

javascript - Angular 变量更改后恢复为原始值

couchdb - 在 couchapp 列表中使用 underscorejs

javascript - 根据序列javascript拆分数组

javascript - 按属性映射集合项 lodash