如何检查文字中的属性是否未定义?

时间:2014-06-18 04:02:48

标签: javascript arrays object

我有一个名为at.sports的对象。

我的对象包含两个字段:sporttype - string,team是一个数组......或另一个对象。

它是这样的:

at.sports = {
    sporttype : "Soccer"
    team : [
               { name : "bayern FC",
                 caption: "FCB"
               }
           ]
    }

如果我检查visual studio中的结构,我会得到:

 at.sports = {
    proto: {},
    sporttype: "Soccert"
    team: object Object
}

如果我点击团队..我看

0 - 名字 - "阿森纳" ,标题 - " Asnl" 1 - 名字 - "拜仁FC" ,标题 - " FCB" 我想访问团队属性..检查每个索引(0,1)的标题,看看是否设置。如果标题未定义..我想用name的值替换它,而不是大写第一个字母。

ex:索引0,如果我只有名字="阿森纳"并且标题未设置,我需要该标题成为"阿森纳",而不是首字母大写..所以最后标题="阿森纳"

我真的不知道如何......抓住正确的财产并进行修改。

我非常好奇..团队属性..是一个对象还是数组?我认为它是一个对象,因为当我点击at.spors时,我在Visual Studio中得到对象...

哦......信任我......我在google上研究过。我只是不明白如何从at.sports里面获取我需要的东西。

在我访问我需要的东西之后..我看到有一种大写方法..并且很容易用其他值更改属性值。我在for statement中遇到错误。

我试过了:

       for (var i = at.sports.length; i--;) {
            if (typeof at.sports.team[i] === "undefined") {
                alert("something is undefined");
            }
       }

我得到警报2次。我有2个索引。所以..我认为问题是错的。

1 个答案:

答案 0 :(得分:0)

如果at.sports不是一个数组,因为对象定义在顶部显示,那么这就是你需要的:

var teamArray = at.sports.team;
for(var i = 0; i < teamArray.length; i++) {
    if(teamArray[i].name != null && teamArray[i].caption == null) {
        var n = teamArray[i].name;
        teamArray[i].caption = n[0].toUpperCase() + n.substring(1);
    }
}

如果它是一个数组,正如您的代码示例所示,那么:

for(var i = 0; i < at.sports.length; i++) {
    var teamArray = at.sports[i].team;
    for(var j = 0; j < teamArray.length; j++) {
        if(teamArray[j].name != null && teamArray[j].caption == null) {
            var n = teamArray[j].name;
            teamArray[j].caption = n[0].toUpperCase() + n.substring(1);
        }
    }
}

将来,我会更好地组织问题和信息。另外,正如您对问题的评论所建议的那样,我会花一些时间阅读JavaScript。