javascript - Javascript错误检测数组中的项目
问题描述
我正在用 javascript 开发一个扫雷游戏。给我带来麻烦的机制是 Mine 对象中的 for 循环,它将 isBomb 变量设置为 true 或 false。
var board = [];
var bombs = [];
var mines;
function findNeighbors(x,y) {
return 'work in progress'
}
function setup() {
// create bombs
for (var i = 0; i < 45; i++) {
var position = [floor(random(0,15)),floor(random(0,15))];
if (!bombs.includes(position)) {
bombs[i] = position;
}
}
// create board
for (var y = 0; y < 15; y++) {
board[y] = new Array();
for (var x = 0; x < 15; x++) {
board[y][x] = new Mine(y,x);
}
}
}
console.log(board);
console.log(bombs);
function Mine(x,y) {
this.x = x;
this.y = y;
this.neighbors = findNeighbors(this.x,this.y);
for (var iter = 0; iter < 45; iter++) {
if (bombs[iter] == [this.x,this.y]) {
this.isBomb = true;
}
else {
this.isBomb = false;
}
}
this.show = function() {
return 'show'
}
this.setValue = function(value) {
this.value = value;
return value;
}
}
例如,当我在控制台中键入炸弹 [44] 时,它会返回类似 [5,11] 的内容,但当我检查炸弹 [44] = [5,11] 时,它总是会返回 false。有没有一种特定的方式我必须表示 [5,11] 数组才能被识别?
解决方案
这是因为您无法在 javascript 中比较两个数组。你可以做的是使用 join() 然后一步一步比较字符串,
bombs[44].join(",") == [5,11].join(",")
或者您可以单独比较数组的内容
推荐阅读
- c# - 通过静态类更改图像源的问题
- algorithm - m路树和m路搜索树的区别
- xamarin - Appium WebView 始终呈现为 NATIVE_APP(iOS 和 Android / Xamarin)
- python - cx_freeze - 通过创建的程序的 GUI 运行 ffmpeg.exe 或 ffplay.exe 时打开命令窗口 - 如何隐藏它?
- nginx - Nginx/Lua 行为异常
- angular - Angular - 如果选中复选框,则显示组件。每个复选框都有单独的组件
- powerbi - 来自子组的总数百分比 - Power BI
- c++ - 具有“即插即用”功能的 C++ 类
- swift - 删除行后更新 indexPath 值
- dataframe - 使用 pyspark 运行时 Hive 更改表添加列问题