在Javascript二维数组上获取类型错误

时间:2018-07-27 03:38:18

标签: javascript arrays

我为数组[0] [0]和数组[0] [1]分配了预定义的变量,并为数组的其余部分分配了带有for循环的php变量的数据。

function getDistance(){
    var row = JSON.parse(document.getElementById('rows').innerHTML);
    var markers = JSON.parse(document.getElementById('markers').innerHTML);
    var distance = new Array(row);
    for (var i = 0; i < row; i++) {
        distance[i] = new Array(2);
    }
    distance [0][0]= 16.78789;
    distance [0][1]= 96.15291;
    for(var i = 0; i<markers.length; i++){
        var latt = parseFloat(markers[i].latitude);
        var longt = parseFloat(markers[i].longitude);
        distance [i+1][0]= latt;
        distance [i+1][1]= longt;
    }
}

这是我在距离[i + 1]上出现错误的地方。其说出的距离[i + 1]未定义。如果我在for循环中分配distance [i] [0],则代码工作正常,这意味着我将分别分配给distance [0] [0]和[0] [1]。它不允许我从数组索引1开始。 这段代码可以正常工作,我的变量没有问题,我得到了仅在数组索引操作时才需要的所有变量。

function getDistance(){
var row = JSON.parse(document.getElementById('rows').innerHTML);
var markers = JSON.parse(document.getElementById('markers').innerHTML);
var distance = new Array(row);
for (var i = 0; i < row; i++) {
  distance[i] = new Array(2);
}
for(var i = 0; i<markers.length; i++){
    var latt = parseFloat(markers[i].latitude);
    var longt = parseFloat(markers[i].longitude);
    distance [i][0]= latt;
    distance [i][1]= longt;
}
}

2 个答案:

答案 0 :(得分:1)

数组是零索引,因此您应该与第1行进行比较

response.content

并在此行中删除+1

for (var i = 1; i < distance.length-1; i++) {

答案 1 :(得分:1)

在解析JSON之后,请确保“行”是一个数字,否则您的数组将在0处包含单个“字符串”或“对象”项

var row = parseInt(JSON.parse(document.getElementById('rows').innerHTML));

然后检查“距离”长度

var distance = new Array(row);
console.log(distance)