Javascript 函数有点计算错误
首先,我有一个数据库,用于保存我正在创建的游戏的地图数据。我的页面上的脚本使用JSON从数据库中检索一定数量的数据并将其存储在数组中 当检索到数据时,它会通过一个函数来确定该特定区域中使用了多少个单独的分幅。代码如下:Javascript 函数有点计算错误,javascript,arrays,Javascript,Arrays,首先,我有一个数据库,用于保存我正在创建的游戏的地图数据。我的页面上的脚本使用JSON从数据库中检索一定数量的数据并将其存储在数组中 当检索到数据时,它会通过一个函数来确定该特定区域中使用了多少个单独的分幅。代码如下: var xmlhttp = new XMLHttpRequest; xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState == 4){ var map = JSON.parse(xml
var xmlhttp = new XMLHttpRequest;
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
var map = JSON.parse(xmlhttp.responseText);
var mapTiles = new Array;
for(var count = 0; count < map.length; count ++){
if(map[count]){
if(map[count]['tile'] in mapTiles == false){
mapTiles.push(map[count]['tile']);
}
}
}
alert(mapTiles);
}
}
var xmlhttp=newxmlhttprequest;
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4){
var map=JSON.parse(xmlhttp.responseText);
var mapTiles=新数组;
对于(var count=0;count
每次脚本发现mapTiles数组中不存在的平铺编号时,都会将其添加到该编号中
当前,该脚本正在获取1024条记录,其中除一条记录外,所有记录都包含平铺值“1”,另一条记录包含平铺值“2”。这意味着当我提醒mapTiles数组时,它应该显示“1,2”,但它会显示“1,1,2”。因此,脚本中有一个小错误,但我找不到它。检查对象是否具有命名属性或数组索引中是否包含元素。在您的情况下,检查总是false,因为第一次检查时没有元素,因此它返回false。当mapTiles包含1
时,它位于第零位,因此检查返回false。检查2
时,最后一个元素位于第一个位置,因此返回false。您需要遍历数组并检查元素的值,而不是在操作符中使用
function contains( obj, aray )
{
for (var i = 0, len = aray.length, isIn = false; i < len && !isIn; ++i) {
isIn = aray[i] === obj;
}
return isIn;
}
...
if(!contains(map[count]['tile'],mapFiles)){
mapTiles.push(map[count]['tile']);
}
函数包含(obj、aray)
{
对于(变量i=0,len=aray.length,isIn=false;i
检查对象是否具有命名属性或数组索引中是否包含元素。在您的情况下,检查总是false,因为第一次检查时没有元素,因此它返回false。当mapTiles包含1
时,它位于第零位,因此检查返回false。检查2
时,最后一个元素位于第一个位置,因此返回false。您需要遍历数组并检查元素的值,而不是在
操作符中使用
function contains( obj, aray )
{
for (var i = 0, len = aray.length, isIn = false; i < len && !isIn; ++i) {
isIn = aray[i] === obj;
}
return isIn;
}
...
if(!contains(map[count]['tile'],mapFiles)){
mapTiles.push(map[count]['tile']);
}
函数包含(obj、aray)
{
对于(变量i=0,len=aray.length,isIn=false;i