javascript - 如何检查对象中的值是否是原始值?
问题描述
所以基本上我想检查我的数据(JSON 格式)是否有一个原始值。所以让我们举个例子:我得到的数据看起来像这样:{name: Artikel, value: {"ArtNr": 1234}} 我想检查 1234 是否是原始的。我还想区分结果是包含基元的数组还是对象。那可能吗?
function isObjectContainingPrimitiveValues(test) {
let values = Object.values(test);
for (let i of values) {
console.log(i);
return (typeof i === 'string' || typeof i === 'number' || typeof i === 'boolean' || typeof i === null || typeof i === undefined);
}
}
更新
因此,在 MaxK 的强大帮助下,我构建了一个isResultContainingPrimitiveValues()
函数来检查我的数据中的原始/原始数组和/或对象。至少以我的理解,以下部分是最棘手的。以下示例有望帮助您更好地理解我的问题。
因此,我的let namesSplit = treeNode.name.split('.');
变量将它获得的数据拆分为nameSplit : Artikel,Artnr
. 接下来我定义了一个作为结果的关键let key = namesSplit[0];
变量key : Artikel
。比我定义一个 contextEntry 变量let contextEntry = exprData.contextEntry.find(_x => _x.name === key);
并具有contextEntry : {"name":"Artikel","value":{"ArtNr":123}}
结果。现在我想检查一下:是否还有另一个拆分namesSplit.length > 1
检查isResultContainingPrimitiveValues()
。如果它是原始的,则抛出错误,如果它是一个对象 -> 从中获取值,如果它是一个数组 -> 从那里获取值。我知道这很多,但从所有令人困惑的东西中我似乎无法想清楚,所以我很感激我能得到的每一个帮助。
解决方案
您将在第一次迭代时从您的函数返回。仅当您找到非原始值并且能够遍历所有值时才应返回 false,因为所有值都是原始值:
function isObjectContainingPrimitiveValues(testObj) {
let values = Object.values(testObj);
for(let i of values){
if (typeof i === 'object') {
return false;
}
}
return true;
};
更新:
阅读您的评论后,我更改了代码以检查具有原语的数组。这个想法是,创建一个只检查单个值是否是原始值的新函数。现在,如果我们找到一个数组,我们可以简单地检查 - 在数组的帮助下一些函数 - 如果数组内的某个元素不是原始。如果是,则返回 false,否则我们将执行与之前相同的检查:
function isObjectContainingPrimitiveValues(testObj) {
let values = Object.values(testObj);
for (let i of values) {
if (Array.isArray(i)) {
if (i.some(val => !isPrimitive(val)))
return false;
} else {
if (!isPrimitive(i))
return false;
}
}
return true;
};
function isPrimitive(test) {
return typeof test !== 'object'
}
推荐阅读
- java - 如何在 Recyclerview 中显示图像 - Recyclerview 图像显示错误
- excel - 溢出范围的条件格式
- java - 在 android studio 中迁移到 android 后,文件上传器中的 startActivityForResult 显示错误
- apache-kafka - Kafka apache + 如何跨 jbod 重新平衡主题
- c++ - Apple Clang 和 Homebrew 中支持 OpenMP 的 Clang 之间有区别吗?
- git - Git 无法解析外部主机名
- .net-core - 未处理异常上的 MessageLockLostException 与 Azure 服务总线上 MassTransit 的 ConfigureDeadLetterQueueErrorTransport 结合使用
- javascript - 如何在 LeafletJS 标记中添加一个按钮来运行代码?
- python - 在 Django 中,导入导出模块不适用于我的用户模型
- javascript - 导入财务图表