0

在以下配置中,我从我的数据库中返回了可变数量的 lat 和 lon

lat,lon*lat,lon*lat,lon

所以我分裂了*哪个有效。

然后,,如果我打印特定的数组单元格,我会拆分似乎可以工作的那个。

当我尝试执行以下操作时,一切都变得糟透了。

当我打印

cords[0, 0] + cords[0, 1] + "\r\n" + cords[1, 0] + cords[1, 1] + "\r\n" + cords[2, 0] + cords[2, 1] + "\r\n"

依此类推,每一行都有完全相同的纬度和经度

 41.47033705-81.93612862
 41.47033705-81.93612862
 41.47033705-81.93612862
 41.47033705-81.93612862
...

我昨晚整晚调试了这个东西,然后今晚又调试了几个小时,我似乎找不到错误。

                var cords = [];
                var response = xmlhttp.responseText;
                var locs = response.split("*");

                for(var len = 0; len < locs.length; len++)
                {
                    var temp = String(locs[len]).split(",");
                    if (temp.length > 1)
                        cords.push(temp[0],temp[1]);

                }

我也试过cords.push(temp)哪个不起作用

4

3 回答 3

3

如果你想要二维数组,你需要使用:

cords.push([temp[0],temp[1]]);

取而代之,然后将其寻址为cords[0][0],等等。这样,您就有了一个包含 N 个元素的数组,每个元素都是一个恰好包含 2 个元素的数组。

解释为什么您的代码不起作用:

cords[2, 1]

表达式被视为对具有索引的cords数组的访问。2, 12, 1逗号运算符是 2 个数字。逗号运算符返回传递的最后一个操作数。所以2, 1实际上等于1因此cords[2, 1]cords[1]

于 2013-08-21T01:31:42.587 回答
0
<script>
var locs = "lat1,lon1*lat2,lon2*lat3,lon3";
var arr = locs.split("*");
var cords = new Array();
for (var i=0;i<arr.length;i++){
    var x = arr[i].split(",");
    cords.push(x);
}
//test
for (var i=0;i<cords.length;i++){
    document.write(cords[i][0]+" "+cords[i][1]+"<br/>");
}
</script>
于 2013-08-21T01:52:51.790 回答
0

我的方法...每个数组都包含纬度和经度。 http://jsfiddle.net/techsin/HWhMY/

var s = 'lat,lon*lat,lon*lat,lon';
var cords = makeArr(s);

console.log(cords[0][1]);

function makeArr() {
    var g = 0, arr = [],
        n = s.replace(/,|\*/g, ' ').split(' ').map(jn);

    function jn(s) {
        if (g<2) {
            arr.push(s);
            g++;
        } if (g>1) {
           g = 0, r = arr, arr = [];
           return r;
        }

    }
    n.forEach(function (e, i) {if (e == undefined) {n.splice(i, 1);}});
    return n;
}
于 2013-08-21T02:50:47.030 回答