Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数有点计算错误_Javascript_Arrays - Fatal编程技术网

Javascript 函数有点计算错误

Javascript 函数有点计算错误,javascript,arrays,Javascript,Arrays,首先,我有一个数据库,用于保存我正在创建的游戏的地图数据。我的页面上的脚本使用JSON从数据库中检索一定数量的数据并将其存储在数组中 当检索到数据时,它会通过一个函数来确定该特定区域中使用了多少个单独的分幅。代码如下: var xmlhttp = new XMLHttpRequest; xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState == 4){ var map = JSON.parse(xml

首先,我有一个数据库,用于保存我正在创建的游戏的地图数据。我的页面上的脚本使用JSON从数据库中检索一定数量的数据并将其存储在数组中

当检索到数据时,它会通过一个函数来确定该特定区域中使用了多少个单独的分幅。代码如下:

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