javascript - Lodash:_.has 检查返回 false 的键
问题描述
我有这个对象:
values = {page: "0", length: "12"}
我想检查密钥是否有page
,length
所以我想出了这个解决方案Lodash
:
has(values, 'page') && has(values, 'length')
这按预期返回 true 但我想使用更简写的方法并尝试:
has(values, ['page', 'length]')
但这返回错误。知道为什么吗?
https://lodash.com/docs/4.17.10#has
Lodash
有一个返回 true 的示例:
var object = { 'a': { 'b': 2 } };
_.has(object, 'a');
// => true
_.has(object, 'a.b');
// => true
_.has(object, ['a', 'b']);
// => true
有没有更优雅的方法来检查我的对象中的键,或者我应该让我的解决方案保持原样:has(values, 'page') && has(values, 'length')
?
解决方案
_.has(object, path)
<-
你读过路径这个词吗?基本上,lodash将使用该路径遍历对象。
我认为你可以使用 vanilla javascript 来做到这一点:
let values = { page: "0", length: "12" },
keys = Object.keys(values),
result = ['page', 'length'].every(k => keys.includes(k));
console.log(result);
使用lodash:
let values = { page: "0", length: "12" },
keys = _.keys(values),
result = _.every(['page', 'length'], k => _.includes(keys, k));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
推荐阅读
- javascript - 为什么 JS 在存储中保存不同的日期?
- javascript - 使用 vanilla JS 在 html 表上显示 JSON
- c - 普通程序中的 GDB 断点未触发
- c# - 如何使用 azure 函数或逻辑应用程序监视 sftp 中的多个位置?
- excel - 测试模块 VBA
- firebase - Firebase - 检测某个用户是否已经登录
- haskell - 在haskell中的输入字符串列表上应用PDA转换
- r - R中的函数在楼梯中排列硬币。任务是确定完成的楼梯中完整的硬币行数
- powershell - 从长字符串中提取日期和时间
- php - 使用 include_once 向类添加更多方法