2017-09-20 60 views
0

我會盡我所能,試圖問這個問題,因爲它是一個缺乏瞭解的知識,我所期待的是能夠搜索到它,因爲我不使用JavaScript流體。我知道它爲什麼會發生,我只是不確定如何使用JavaScript解決它。未定義的輸出時,對象丟失

我解析,並通過從API響應JSON文件循環。如果有一個標題可能是任何文本的值,則NWSheadline對象有時可能會從文件中刪除,如果沒有任何文本要顯示,有時候,下面代碼片段中的對象NWSHeadline將包含在文件中。

"parameters": { 
        "NWSheadline": [ 
         "TEXT VALUE FOR NWSHEADLINE" 
        ], 

爲了簡潔起見,我只發佈了與上述問題相關的代碼段。在我的循環我有一個爲對象NWSheadline

var NWSheadline = entry.properties.parameters.NWSheadline; 

所以,當我把它放在我的HTML例如創建了var下面一行...

<div class="alerts-description-popover"><p>' + NWSheadline + '</p> 

它將輸出該值如果NWSHeadline對象存在於文件中,則該對象可以是任何文本形式的JSON文件中的NWSheadline。如果NWSheadline對象不存在於JSON文件中,我只剩下Undefined被輸出,因爲NWSheadline正在我的HTML中聲明,但不存在於JSON文件中。所以我知道爲什麼它現在正在嘗試解決它。

所以我的問題是我怎麼會壓制它顯示未定義的Javascript,因此如果NWSHeadline是不是在JSON它會顯示什麼,而不是未定義可用?

現在PHP其中我更熟悉,我做這樣的事情。

$NWSheadline = $currFeature['properties']['parameters']['NWSheadline'][0] ?? null; 

是否有類似的JavaScript的東西,都會有相同的結果,或防止未定義當NWSheadline不存在的一些其他手段?

回答

2

是的!您可以使用「或」||運算符。 你可以做:

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 

希望它可以幫助

+0

也許我的邏輯是關閉還是我失去了一些東西。如果我試試'var NWSheadline = entry.properties.parameters.NWSheadline || 「」;'如果對象NWSheadline從JSON文件中丟失,它仍然輸出未定義的值。也許我正在尋找錯誤的地方來解決這個問題? –

+0

我編輯了我的答案,嘗試使它更清晰,希望它有幫助! 如果您仍然看到'未定義',我會仔細檢查de var名稱,如果您不熟悉調試,則可以使用一些console.log來查看這些值。 – renanpallin

+0

不理會我以前的評論。這確實有用。 'var NWSheadline = entry.properties.parameters.NWSheadline || 「」;我正在編輯我的備份文件,而不是我的測試版文件,這就是爲什麼我沒有看到變化。 –