目前我在填充一个数组时遇到问题,我在我的代码中使用我在代码中调用input
的对象来调用athlete
。实例化了名为athlete
的对象使用其他几个数组。我已经附加了一个jsfiddle链接到这篇文章,它基本上是一个具有相同问题的简化版本。我知道逻辑可能看起来多余,但这是因为这个例子是必要的(实际逻辑将与用户输入一起使用)。
我的问题是我使用new Athlete
个对象填充数组,但是我无法访问数组中对象的特定属性。
我是处理对象的新手,所以我很欣赏有关如何使用这些工作的任何建议。我添加了最后一行代码来显示我的输入数组。
var input = new Array();
var girl=[1,1,1,1];
var boy = [1,1,1,1];
var balleyscore = [100,400,320,50];
var boyHeight = [72,68,65,75];
var girlHeight=[60,57,65,55];
var boyAge = [19,32,22,25];
var girlAge = [20,15,32,18];
//the above are all generate from user inputs
// they go into the object constructor below
function athlete(girl, boy,balleyscore, height, age){
this.girl=girl;
this.boy=boy;
this.balleyscore=balleyscore;
this.height=height;
this.age = age;
};
function insertToObjectArray()
{
var j=0;
var i=0; //insert all our data into one array of the load object
for(j = 0; j < girl.length;j++)
{
input[j]= new athlete(true,false,balleyscore[j],girlHeight[j],girlAge[j]);
}
for(j = girl.length; j <=girl.length+boy.length;j++)
{
input[j]= new athlete(false,true,0,boyHeight[i],boyAge[i]);
i++;
}
};
insertToObjectArray();
document.getElementById("demo").innerHTML=input;
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以通过数组索引和属性名称访问对象。将此行document.getElementById("demo").innerHTML=input
更改为此代码(在ul#demo中列出所有对象sex和balleyscore):
for (var i=0; i<input.length; i++) {
var node = document.createElement('li'),
txt = document.createTextNode(
(input[i].girl? 'girl' : 'boy') + ' ' + input[i].balleyscore);
node.appendChild(txt);
document.getElementById("demo").appendChild(node);
}
HTML:
<p><ul id="demo"></ul></p>
浏览器控制台对于调试非常有用。尝试在创建对象后添加此行,并在控制台中检查数组:
insertToObjectArray();
console.log(input); // output input array to console
答案 2 :(得分:1)
你的运动员对象应该是例如:
function athlete(age)
{
this.age = age;
}
var item = new athlete(10);
item.age;//10
答案 3 :(得分:1)
您可以像这样显示身高和年龄:
var output = "";
for(var i = 0, length = input.length; i !== length; i++) {
output += "height: "+input[i].height + ", age: " + input[i].age + "<br />";
}
document.getElementById("demo").innerHTML=output;
还有一点错误。使用
j < girl.length+boy.length
而不是
j <=girl.length+boy.length
答案 4 :(得分:1)
要访问数组输入中对象的属性:
input[0].age
这将允许您访问第一个运动员的年龄
也可以像这样访问:
input[0]['age']
无论哪种方式,他们都将显示20作为阵列中第一位运动员的年龄。
在调试器中通过console.log(输入)检查它,然后您可以使用数据结构。
例如:
document.getElementById("demo").innerHTML=input[0].age;