2

因此,在使用 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]
]
4

3 回答 3

0

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

array.push(item);

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

daLocs.push([breakdown[0], parseDouble(breakdown[1]), ...TODO... ])
于 2013-06-19T16:29:57.600 回答
0

没有神奇的5and 4(因为我无法理解它们从何而来),我建议这样做:

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 小提琴演示

参考:

于 2013-06-19T16:28:13.983 回答
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

于 2013-06-19T16:26:22.080 回答