首页 > 解决方案 > 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

解决方案


这是因为您无法在 javascript 中比较两个数组。你可以做的是使用 join() 然后一步一步比较字符串,

bombs[44].join(",") == [5,11].join(",")

或者您可以单独比较数组的内容


推荐阅读