【发布时间】:2020-02-20 13:59:23
【问题描述】:
所以基本上我想检查我的数据(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()。如果它是原始的,则抛出错误,如果它是一个对象 -> 从它获取值,如果它是一个数组 -> 从那里获取值。我知道这很多,但从所有令人困惑的东西中我似乎无法想清楚,所以我很感激我能得到的每一个帮助。
【问题讨论】:
-
我不确定问题是什么。但是 Object 接受一个参数并返回一个 Object 所以如果 Object(test) !==test 那么 test 是原始的
-
所以我得到了一个对象,其中包含一个键和一个值(例如:'ArtNr': 1423)。我想根据我的 isPrimitive 函数检查值
-
typeof i === null || typeof i === undefined不会发生(typeof运算符 always 返回一个字符串)。我想你想要typeof i === 'undefined' || i === null。 -
您的函数名为
isPrimitive,但它接受object参数 - 您应该将函数重命名为isObjectContainingOnlyPrimitiveValues或更具体的名称,因为object值(除了null)不是原始值。 -
谢谢,我会试试的。 (我也更新了我的问题,希望现在更清楚)
标签: javascript typescript types primitive