Javascript从字符串构建对象

时间:2013-06-19 16:21:59

标签: javascript

因此,在使用google map api示例时,我正在尝试从字符串构建对象列表。我的java脚本在这里有一个星期,但我认为第一个代码是我创建对象的循环。

Locations部分最终应该是什么样子。如果我使用具有对象的位置,则该功能起作用。但如果我用循环对象替换它就会失败。

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]
]

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

参考文献:

答案 2 :(得分:0)

您不使用+ =添加到数组。您可以将其更改为:

array.push(item);

此外,您的预期结果似乎包含实际的字符串和数字。在你的循环中,你不仅没有使用parseInt / parseDouble,而且你只是将4个值作为字符串附加,用逗号分隔。我猜测你想要locations数组中的单个数组。所以,举个例子吧。此代码中的第一个“[”正在创建一个新数组:

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