我会尽力尝试问这个问题,因为我不了解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);


在这里,我们有entryNWSheadlineentry2NWSheadline2
输出:

> ["TEXT VALUE FOR NWSHEADLINE"]
> default value


希望对您有所帮助

09-25 15:40