2010-07-26 65 views
1

對不起,這可能是一個重複的問題,但是如何在不使用eval()的情況下在另一個對象內的Javascript中迭代列表?不使用eval對json對象進行迭代?

見僞代碼如下大寫:

polygon = polygon['coordinates']; //list object 
var polygon = new CM.Polygon([ 
    FOR POLY IN POLYGON { 
     new CM.LatLng(poly[1], poly[0]), 
} 
]); 

很顯然,我不想for循環的CM.Polygon對象(CloudMade映射對象)內的真實,我想簡單地說就是每個輸出LatLng依次列表。

謝謝!

回答

1

爲什麼你不想使用真正的循環?我的建議是使用自我執行功能,例如:

polygon = polygon['coordinates']; //list object 
var polygon = new CM.Polygon(
    (function(){ 
    var oput = [], x, y; 
    for (x=0,y=polygon.length ; x<y ; x++){ 
     oput.push(new CM.LatLng(polygon[x][1],polygon[x][0])); 
    } 
    return oput; 
    }()) 
); 
+1

我喜歡這個!甚至不知道你可以做到這一點! *廢棄自己的解決方案* ha – Parris 2010-07-26 17:57:13

+0

是的,這是功能範圍的一個驚人功能。 – Rixius 2010-07-26 17:58:19

+0

我在JS中使用'for(;;){}'語法,但對於(,,,){}'沒有'familliar。這是一個錯字嗎? – 2010-07-26 19:22:08