gpt4 book ai didi

javascript - 函数出现轻微错误计算

转载 作者:行者123 更新时间:2023-11-30 23:45:58 25 4
gpt4 key购买 nike

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

检索数据时,它会通过一个函数来找出该特定区域使用了多少个单独的图 block 。这是代码:

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);
}
}

每次脚本找到mapTiles数组中尚不存在的图 block 编号时,都会将其添加到其中。

当前,该脚本正在获取 1024 条记录,除了一条记录外,所有记录都包含图 block 值“1”,另一条记录包含图 block 值“2”。这意味着当我警告 mapTiles 数组时,它应该显示“1, 2”,但实际上却显示“1, 1, 2”。所以脚本中有一个小错误,但我找不到它。

最佳答案

in operator检查对象是否具有指定属性或包含数组索引处的元素。在您的情况下,检查始终为 false,因为第一次没有元素,因此它返回 false。当 mapTiles 包含 1 时,它位于第 0 个位置,因此检查返回 false。当您检查 2 时,最后一个元素位于第一个位置,因此返回 false。您需要遍历数组并检查元素的值,而不是使用 in 运算符。

 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']);
}

关于javascript - 函数出现轻微错误计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3022018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com