Javascript 在插入1后,数组中字典中的数字如何可以直接为NaN?
我有一段代码,其中包括:Javascript 在插入1后,数组中字典中的数字如何可以直接为NaN?,javascript,Javascript,我有一段代码,其中包括: var clusterCenters = [{"x": 1,"y": 1},{"x": 10,"y": 10}]; console.log(clusterCenters); 在Chrome 26中: 在Firefox21中: 为什么会发生此错误? 我猜错误应该在下面的函数中 function getKMeansInfo(k, mouseX, mouseY) { // choose cluster centers var clusterCenters
var clusterCenters = [{"x": 1,"y": 1},{"x": 10,"y": 10}];
console.log(clusterCenters);
在Chrome 26中:
在Firefox21中:
为什么会发生此错误?
我猜错误应该在下面的函数中
function getKMeansInfo(k, mouseX, mouseY) {
// choose cluster centers
var clusterCenters = [{"x": 1,"y": 1},{"x": 10,"y": 10}];
console.log(clusterCenters);
for (iteration=0;iteration< 20;iteration++) {
// for each object, check which cluster is nearest
for (i=0; i<points.length; i++) {
var distMin = 1000000;
var clusterMin = 0;
for(j=0; j<k; j++) {
var dist = euklideanDist(clusterCenters[j], points[i]);
if (dist < distMin) {
distMin = dist;
clusterMin = j
}
}
points[i]["cluster"] = clusterMin;
}
// calculate center of cluster
var clusterSum = new Array(k);
for (i=0; i<k; i++) {
clusterSum[i] = {"x":0, "y":0, "n":0};
}
for (i=0; i<points.length; i++) {
clusterSum[points[i]["cluster"]]["x"] += points[i]["cluster"]["x"];
clusterSum[points[i]["cluster"]]["y"] += points[i]["cluster"]["y"];
clusterSum[points[i]["cluster"]]["n"] += 1;
}
for (i=0; i<k; i++) {
if (clusterSum[i]["n"] > 0) {
clusterCenters[i] = {
"x":clusterSum[i]["x"]/clusterSum[i]["n"],
"y":clusterSum[i]["y"]/clusterSum[i]["n"]};
}
}
}
return {"cluster":1, "radius":10};
}
函数getKMeansInfo(k、mouseX、mouseY){
//选择群集中心
var-clusterCenters=[{“x”:1,“y”:1},{“x”:10,“y”:10}];
控制台日志(集群中心);
对于(迭代=0;迭代<20;迭代++){
//对于每个对象,检查最近的簇
对于前面提到的(i=0;i),控制台日志记录可能很棘手。尤其是Chrome,它以实时格式显示单值对象 如果要多次记录以查看对象的演变,请使用以下命令:
console.log (JSON.stringify (obj));
这将确保您在执行console.log时看到值。这确实依赖于JSON.stringify
,对于复杂的递归对象将失败,因此这对DOM对象没有帮助
调试JavaScript
当您想要调试JavaScript时,您可以使用Firefox和Firebug,也可以使用Chrome及其内置开发工具。您可以使用Ctrl+Shift+I打开它们。它们如下所示:
使用开发人员工具,您可以设置断点,这使得调试更加容易。
console.log
实现有时是“活动”的。它们不一定表示对象被记录时的状态,而是表示对象的“当前状态”。您可以查看所有更改clusterCenters
的代码,尤其是您分割值的最后一个循环。那里必须有一个非数字值。我的代码中的错误出现在点[i][“cluster”][“x”
。它应该是点[i][“x”]
。所以我尝试访问一个字典,尽管它是一个似乎导致NaN的数字。我通过使用Chromes developer tools发现了这个错误。我可以用屏幕截图向developer tools添加提示吗?