2015-12-10 55 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