javascript - 如何检查 Json Doc 是否具有 Node JS 中的所有必需键
问题描述
我找到了多个关于如何检查 json 文件是否存在密钥的示例,但我正在尝试更有效地执行此操作。
我有一个导入过程,用户上传一个 csv 文件,然后我将其转换为 json。
由于在我的情况下 csv 文件有多种格式,我想在导入之前检查是否存在一组特定的字段/键,因为它们中的大多数具有不同的键名。
因此,首先我去计算 json 中的密钥计数,这缩小了我可能的定义。然后我想使用一个像这样的键数组
["field1", "field2", "field3"]
然后检查它们是否都在我的json文件中。因为有一种简单的方法还是需要遍历数组并检查每个键?
解决方案
您可以从 JSON 对象中提取键,但您仍然需要遍历“必需”键列表并检查它们是否存在于键列表中。像下面这样的东西应该可以解决问题:
const myObject = {}; // getObjectFromCSV();
const required = ["field1", "field2", "field3"];
const objKeys = Object.keys(myObject);
required.every(key => objKeys.includes(key));
要获取缺少的必填字段的列表,我会执行以下操作。此代码将替换上面的最后一行(使用every
以下内容:
const missingRequired = required.reduce(
(acc, key) => {
if (!objKeys.includes(key)) {
acc.push(key);
}
return acc;
}, []);
const isValid = missingRequired.length === 0;
在 reducer 函数中,acc
是否将累加器设置为[]
最初,如果它为空,则没有丢失键。请注意,与every
函数相比,条件是相反的,因为我们想知道何时丢失了某个键,而不是是否找到了所有键。
推荐阅读
- ios - 在 XCUITests 中,如何等待多个 ui 元素的存在?
- google-play-console - 在 Internal Test Track 中更改 APK 而不更改版本代码
- unity3d - 设备跟踪丢失时无法获取
- eclipse - 纯 Eclipse E4 中的外壳
- android - 将改造 2 与 rxjava Single 一起使用时出现 Proguard 错误
- windows - Windows 10:设备管理器中的错误代码 52,交叉签名驱动程序中的签名正确
- node.js - 使用 Angular6 和 NodeJS 显示来自服务器文件系统的图像
- sql - NOT IN 返回意外结果
- node.js - Docker,mongodb不连接nodejs
- excel - 如何在不注册 COM 组件的情况下在 VBA 中获取 VSTO 插件智能感知