2014-10-02 75 views
0

我有一個來自twitter api的json文件。 有時它確實有媒體[0]陣列,有時它沒有。 如果是這樣,我想添加數組到另一個數組,所以它提醒它,否則我希望它檢查下一個。檢查數組是否存在於json中Javascript/jquery

這是我試過,但它沒有工作正常。

if(twitter.statuses[key].entities.media[0].media_url!=="Uncaught TypeError: Cannot read property '0' of undefined"){ 
    console.log(twitter.statuses[key].entities.media[0].media_url); 
} 

它一直給錯誤:未捕獲的類型錯誤:未定義 無法讀取屬性「0」,如果媒體數組犯規存在,否則它工作正常,並更進一步。

有人知道如何解決這個問題嗎?

感謝您的幫助!

回答

2

由於您想要檢索...的第一個元素(twitter.statuses [key] .entities.media [0];媒體已經是null並且您無法訪問第一個元素空)的

嘗試用

if (typeof twitter.statuses[key].entities.media != "undefined") { 
    ... 
+0

感謝這個工作我一直與嘗試這種媒體[0],而不是感謝您的幫助 – Stefan 2014-10-02 07:32:51

2

一個未定義的屬性有undefined類型和值檢查,你可以對證這樣的:

if (twitter.statuses[key].entities.media !== undefined) { 
    // ... 
} 

或像這樣:

if (typeof twitter.statuses[key].entities.media !== "undefined") { 
    // ... 
} 
+0

媒體,這並不工作介質[0]給出如上,但沒有同樣的錯誤了[0]它很好地工作,謝謝! – Stefan 2014-10-02 07:35:32

+0

我不應該在咖啡之前發佈答案......修正。 – 2014-10-02 07:56:54

+0

哈哈它現在的作品謝謝 – Stefan 2014-10-02 08:31:01

0

我建議你總是初始化變量來檢查空值或未定義的值。 你的情況:

var media0 = twitter.statuses[key].entities.media[0] || null; 
if(media0 != null){ 
    if(media0.media_url != null) 
     console.log(twitter.statuses[key].entities.media[0].media_url); 
    else 
     console.log('twitter.statuses[key].entities.media[0].media_url is null or not defined'); 
} 
else 
    console.log('twitter.statuses[key].entities.media[0] is null or not defined');