我会尽力尝试问这个问题,因为我不了解JavaScript,因此缺乏了解要寻找的内容的知识。我知道为什么会这样,只是不确定如何使用JavaScript解决它。
我正在解析和循环来自API响应的JSON文件。如果有一个标题可以是任何文本作为值,或者如果没有要显示的文本可以将NWSheadline对象从文件中一起删除,则有时以下代码段中的对象NWSHeadline将包含在文件中。
"parameters": {
"NWSheadline": [
"TEXT VALUE FOR NWSHEADLINE"
],
为了简洁起见,我仅发布与我的问题相关的上述摘要。在我的循环中,我有以下代码行为对象NWSheadline创建了变量
var NWSheadline = entry.properties.parameters.NWSheadline;
因此,例如,当我将其放入HTML中时...
<div class="alerts-description-popover"><p>' + NWSheadline + '</p>
如果该文件中存在该NWSHeadline对象,它将从JSON文件输出该对象NWSheadline的值,该值可以是句子形式的任何文本。如果JSON文件中不存在NWSheadline对象,则由于未在HTML中声明NWSheadline,但JSON文件中不存在NWSheadline,因此仅输出未定义。所以我知道为什么现在要尝试解决它。
所以我的问题是我该如何抑制它在Javascript中显示未定义,以便如果JSON中没有NWSHeadline,它将显示什么而不是未定义?
现在,我对PHP更加熟悉,我做了这样的事情。
$NWSheadline = $currFeature['properties']['parameters']['NWSheadline'][0] ?? null;
当NWSheadline不存在时,JavaScript中是否有类似的东西具有相同的结果或其他防止Undefined的方法?
最佳答案
是!您可以使用“或” ||
运算符。
你可以做:
var NWSheadline = entry.properties.parameters.NWSheadline || "default value";
相当于您的php行;
编辑:
看看这个块,也要熟悉这个运算符:
var has_some_value = "some value!";
var has_undefined;
console.log(has_some_value || "default")
console.log(has_undefined || "default")
您可以看到以下结果:
> some value!
> default
现在,让我们看看您的情况,您可以仅在控制台中测试粘贴:
var entry = {
"properties": {
"parameters": {
"NWSheadline": [
"TEXT VALUE FOR NWSHEADLINE"
]
}
}
}
var NWSheadline = entry.properties.parameters.NWSheadline || "default value";
console.log(NWSheadline);
var entry2 = {
"properties": {
"parameters": {
"some_other_things": 123
}
}
}
var NWSheadline2 = entry2.properties.parameters.NWSheadline || "default value";
console.log(NWSheadline2);
在这里,我们有
entry
和NWSheadline
,entry2
和NWSheadline2
。输出:
> ["TEXT VALUE FOR NWSHEADLINE"]
> default value
希望对您有所帮助