在Javascript中用对象填充数组

时间:2014-01-19 09:30:24

标签: javascript arrays object constructor

目前我在填充一个数组时遇到问题,我在我的代码中使用我在代码中调用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;

http://jsfiddle.net/qC5j4/1/

5 个答案:

答案 0 :(得分:1)

不确定你的问题,在这里我更新了你的小提琴,通过添加线来显示运动员的身高属性

output[j]= input[j].height 

fiddle

答案 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>

FIDDLE

浏览器控制台对于调试非常有用。尝试在创建对象后添加此行,并在控制台中检查数组:

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;