使用Javascript检查项目的属性

使用Javascript检查项目的属性,javascript,object,if-statement,boolean,Javascript,Object,If Statement,Boolean,我正在创建一个蹩脚的基于文本的游戏,我希望每个盒子上要么没有任何东西,要么没有玩家,要么没有怪物,要么没有石楠包。我有一个这样的对象数组: var squares = [ square1 = { //each square with its own number player:false, monster:false, healthPack:false }, square2 = { player:fals

我正在创建一个蹩脚的基于文本的游戏,我希望每个盒子上要么没有任何东西,要么没有玩家,要么没有怪物,要么没有石楠包。我有一个这样的对象数组:

var squares = [

    square1 = { //each square with its own number
        player:false,
        monster:false,
        healthPack:false
    },

    square2 = {
        player:false,
        monster:false,
        healthPack:false
    }

];
如果其中任何一个在正方形上,我将它改为真,我想知道如何检查是否有任何一个已经是真的

这就是我想知道的:

for ( var i in sqaures[x] ) {
     if( what do i put here??? == true ) return;
}
或者如果有其他预先编写的方式?

你的意思就是这样吗

if ((player) || (monster) || (healthPack)) {...

也许是这样的辅助函数

Javascript

function isSquareTrue(square) {
    var i;

    for (i in square) {
        if (square.hasOwnProperty(i) && square[i]) {
            return true;
        }
    }

    return false;
}

var squareXX = { //each square with its own number
    player: false,
    monster: false,
    healthPack: false
}

console.log(isSquareTrue(squareXX));
function anySquaresTrue(arrayOfSquares) {
    var length,
        index,
        property,
        square;

    for (index = 0, length = arrayOfSquares.length; index < length; index += 1) {
        square = arrayOfSquares[index];
        for (property in square) {
            if (square.hasOwnProperty(property) && square[property]) {
                return true;
            }
        }
    }

    return false;
}

var squares = [{ //each square with its own number
        player: false,
        monster: false,
        healthPack: false
    }, {
        player: false,
        monster: false,
        healthPack: false
    }];

console.log(anySquaresTrue(squares));

更新:用于演示阵列中的正方形的已更改问题

Javascript

function isSquareTrue(square) {
    var i;

    for (i in square) {
        if (square.hasOwnProperty(i) && square[i]) {
            return true;
        }
    }

    return false;
}

var squareXX = { //each square with its own number
    player: false,
    monster: false,
    healthPack: false
}

console.log(isSquareTrue(squareXX));
function anySquaresTrue(arrayOfSquares) {
    var length,
        index,
        property,
        square;

    for (index = 0, length = arrayOfSquares.length; index < length; index += 1) {
        square = arrayOfSquares[index];
        for (property in square) {
            if (square.hasOwnProperty(property) && square[property]) {
                return true;
            }
        }
    }

    return false;
}

var squares = [{ //each square with its own number
        player: false,
        monster: false,
        healthPack: false
    }, {
        player: false,
        monster: false,
        healthPack: false
    }];

console.log(anySquaresTrue(squares));

试试这个代码。
应该注意的是healthPack。

对于数组,我该如何做?我没有投反对票,你的回答很好,因为我的第一个版本不清楚,但我确实提到了对象数组。没问题,但有人提到了,如果他们能说出原因,我会很高兴的?无论如何,我更新了一个例子,给你一个对象数组。谢谢你的回答,我创造了这个小提琴-这是我真正想要的。回答被接受。有没有理由不格式化你的代码?@DmitriZaitsev这是什么意思?[@DmitriZaitsev抱歉,他太懒了