2013-06-19 72 views
2

因此,在使用google map API示例時,我試圖從字符串構建對象列表。我的java腳本在這裏有一個星期的時間,但是第一個代碼塊是我創建對象的循環,我想。Javascript字符串構建對象

位置部分是它最終應該看起來像什麼。如果我使用具有該功能對象的對象的位置。但是,如果我用循環對象替換它失敗。

var myStr = "bob|44.654990|-88.129186|7:20 PM,karen|44.469493|-88.087746|8:19 PM"; 

var splitLocations = myStr.split(","); 
var daLocs = []; 
for(var z=0;z<splitLocations.length;z++){ 
    var breakdown = splitLocations[z].split("|"); 
    daLocs += '[' + breakdown[0] + ',' + breakdown[1] + ',' + breakdown[2] + ',' + z + '],'; 
} 
var locations = [ 
    ['bob', 44.654990, -88.129186, 5], 
    ['karen', 44.469493, -88.087746, 4] 
] 
+0

「5」和「4」來自哪個字符串? –

回答

0

您需要將數組推入daLocs;

var myStr = "bob|44.654990|-88.129186|7:20 PM,karen|44.469493|-88.087746|8:19 PM"; 

var splitLocations = myStr.split(","); 
var daLocs = []; 
for(var z=0;z<splitLocations.length;z++){ 
    var breakdown = splitLocations[z].split("|"); 
    //daLocs += '[' + breakdown[0] + ',' + breakdown[1] + ',' + breakdown[2] + ',' + z + '],'; 
    daLocs.push([breakdown[0], breakdown[1], breakdown[2], z]); 
} 

對於

daLocs[1][2] === "-88.087746" 

(和z === 0splitLocations.length

+0

完全感謝! –

0

沒有神奇54(因爲我不能從那裏他們來揣摸),我建議這樣做這樣:

var myStr = "bob|44.654990|-88.129186|7:20 PM,karen|44.469493|-88.087746|8:19 PM", 
    parts = myStr.split(','), 
    locations = []; 

for (var i = 0, len = parts.length; i<len; i++){ 
    locations.push(parts[i].split('|')); 
} 

console.log(locations); 

JS Fiddle demo

參考文獻:

0

您不使用+ =添加到數組。您可以將其更改爲:

array.push(item); 

另外,它看起來像您的預期結果包含實際的字符串和數字。在你的循環中,不僅你沒有使用parseInt/parseDouble,但你只是將4個值附加爲一個字符串,用逗號分隔。我猜測你想要在locations陣列中的單個陣列。所以,拿這個例子。此代碼中的第一個「[」正在創建一個新陣列:

daLocs.push([breakdown[0], parseDouble(breakdown[1]), ...TODO... ])