2015-12-10 51 views
-2

在这里,我想循环通过我的数组元素作为对象。但我的问题是,我无法通过spritearray[i] =(应该)Ncardinal到功能文本(label = (Ncardinal = {"name": "North", "lat": 0, "lon": 360}))我怎样才能通过对象数组循环

var sprite, label; 
var radius = 1; 
function text(label, radius) 
{ 
this.position.x = label.lat; 
this.position.y = label.lon; 
}; 
var Ncardinal = {"name": "North", "lat": 0, "lon": 360}; 
var Scardinal = {"name": "South", "lat": 0, "lon": 180}; 
var Ecardinal = {"name": "East", "lat": 0, "lon": 90}; 
var spritearray = [Ncardinal, Scardinal, Ecardinal]; 
for(var i=0; i<spritearray.length; i++) 
{ 
sprite = new text(spritearray[i], radius); 
} 
+2

你的代码是没有意义的,因为这两个打开的花括号和返回其间 –

+0

' sprite“应该是一个数组''''''你可以在'push'项目中使用。用你的代码,你创建了'text'对象,并把它放在sprite变量中,只保留最后一个。 – Hacketo

+0

我的主要问题是为什么我无法将spritearray [i] = Ncardinal ..传入函数并在函数内部检索它的元素,例如.lat,.lon?对不起,我刚刚创建了一个示例代码,以程序化的方式解释我的问题。Nina scholz – rajesh

回答

0

在添加属性之前,您需要定义this.position


下面是输出到控制台精灵位置的工作版本:

var sprite, label; 
 
var radius = 1; 
 

 
function text(label, radius) { 
 
    this.position = {};   // <---- this is the key 
 
    this.position.x = label.lat; 
 
    this.position.y = label.lon; 
 
    
 
    // or all in one line 
 
    // this.position = {x: label.lat, y: label.lon}; 
 
}; 
 
var Ncardinal = { 
 
    "name": "North", 
 
    "lat": 0, 
 
    "lon": 360 
 
}; 
 
var Scardinal = { 
 
    "name": "South", 
 
    "lat": 0, 
 
    "lon": 180 
 
}; 
 
var Ecardinal = { 
 
    "name": "East", 
 
    "lat": 0, 
 
    "lon": 90 
 
}; 
 
var spritearray = [Ncardinal, Scardinal, Ecardinal]; 
 
for (var i = 0; i < spritearray.length; i++) { 
 
    sprite = new text(spritearray[i], radius); 
 
    console.log(sprite); 
 
}

+0

它正在返回'this'。 –

+0

哦,对了,我错过了,谢谢! – Shomz