检查json Javascript / Jquery中是否存在数组

时间:2014-10-02 07:29:27

标签: javascript jquery html json

我有来自twitter api的json文件。 有时它确实有media [0]数组,有时也没有。 如果它,我想将数组添加到另一个数组,所以它提醒它,否则我希望它检查下一个。

这是我尝试的但是它还没有正常工作。

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);
} 

它一直给出错误:Uncaught TypeError:无法读取未定义的属性“0” 如果媒体阵列不存在,否则它可以正常工作并且更进一步。

有人知道如何解决这个问题吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

您收到错误是因为您要检索...的第一个元素没有(twitter.statuses [key] .entities.media [0];媒体已经是null并且您无法访问第一个元素空)

尝试使用

进行检查
if (typeof twitter.statuses[key].entities.media != "undefined") {
    ...

答案 1 :(得分:2)

未定义的属性具有undefined类型和值,您可以像这样检查它:

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

或者像这样:

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

答案 2 :(得分:0)

我建议你始终初始化变量以检查null或未定义的值。 在你的情况下:

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');