我有一个名为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个索引。所以..我认为问题是错的。
答案 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。