为什么从数组中获取值时会出现NaN(非数字)错误?

时间:2014-12-19 11:40:11

标签: javascript arrays nan

我正在使用三角测量来计算用户的位置。

如果我使用数组值,则会输出NaN NaN,但如果我对值进行硬编码,则可以正常工作并输出

从数组中抓取值:

    var beaconCoordinates = [[10,20], [200,300], [50,500]];

    //get values from array
    var aX = parseInt(beaconCoordinates[0,0]);
    var aY = parseInt(beaconCoordinates[0,1]);
    var bX = parseInt(beaconCoordinates[1,0]);
    var bY = parseInt(beaconCoordinates[1,1]);
    var cX = parseInt(beaconCoordinates[2,0]);
    var cY = parseInt(beaconCoordinates[2,1]);

硬编码值:

    var aX = 2;
    var aY = 4;
    var bX = 5.5;
    var bY = 13;
    var cX = 11.5;
    var cY = 2;

以下是代码的其余部分:

    var dA = 5.7;
    var dB = 6.8;
    var dC = 6.4;

    //trilateration / triangulation formula
    var S = parseInt((Math.pow(cX, 2.) - Math.pow(bX, 2.) + Math.pow(cY, 2.) - Math.pow(bY, 2.) + Math.pow(dB, 2.) - Math.pow(dC, 2.)) / 2.0);
    var T = parseInt((Math.pow(aX, 2.) - Math.pow(bX, 2.) + Math.pow(aY, 2.) - Math.pow(bY, 2.) + Math.pow(dB, 2.) - Math.pow(dA, 2.)) / 2.0);
    var y = ((T * (bX - cX)) - (S * (bX - aX))) / (((aY - bY) * (bX - cX)) - ((cY - bY) * (bX - aX)));
    var x = ((y * (aY - bY)) - T) / (bX - aX);

    //x and y position of user
    console.log(x,y);

有人可以向我解释一下吗?我很困惑。

2 个答案:

答案 0 :(得分:3)

访问阵列时出现轻微错误。你需要

parseInt(beaconCoordinates[0][0]);

而不是

parseInt(beaconCoordinates[0,0]);

答案 1 :(得分:0)

问题是你只获得顶级数组,你不能访问值arr [0,0]而是需要一次获得一个值:arr [0] [0]

http://jsfiddle.net/ayqmLp2n/

var beaconCoordinates = [[10,20], [200,300], [50,500]];

//get values from array
var aX = parseInt(beaconCoordinates[0][0]);
var aY = parseInt(beaconCoordinates[0][1]);
var bX = parseInt(beaconCoordinates[1][0]);
var bY = parseInt(beaconCoordinates[1][1]);
var cX = parseInt(beaconCoordinates[2][0]);
var cY = parseInt(beaconCoordinates[2][1]);

console.log(cY);

如果你正在使用它,你也应该将一个基数参数传递给parseInt ......

Why do we need to use radix?

http://www.w3schools.com/jsref/jsref_parseint.asp