gpt4 book ai didi

javascript - 检查数组中是否找到值

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

我正在尝试检查数组中是否包含某个数字。

我尝试使用if(矿井中的值)var value = this.value; var isMine =mines.indexOf(value);

但是这些都没有按预期工作。谁能解释为什么? FIDDLE

JS

    var mines = []
while (mines.length < 9){
var randomnumber=Math.ceil(Math.random() * 30)
var found=false;
for(var i=0;i<mines.length;i++){
if(mines[i]==randomnumber){found=true;break}
}
if(!found)mines[mines.length]=randomnumber;
}

$(document).ready(function() {
$(".blank").click(function() {
var value = this.value;
if (value in mines) {
$(this).removeClass("blank");
$(this).addClass("bomb");
} else {
$(this).removeClass("blank");
$(this).addClass("safe");
}
});
});

HTML

<div class="background">
<table>
<tr>
<td colspan="10"><div class="title">title here</div></td>
</tr>
<tr>
<td colspan="10"><div class="info">text here</div></td>
</tr>
<tr>
<td><button class="blank" value="1"></button></td>
<td><button class="blank" value="2"></button></td>
<td><button class="blank" value="3"></button></td>
</tr>
<table>
</div>

最佳答案

当它是一个数组时,您应该使用 indexOf,但有两个主要问题。

首先,类型必须匹配。数组有数字,但元素的值始终是字符串。
简单的解决方案是将值解析为整数

var value = parseInt( this.value, 10 );

其次,indexOf返回索引,对于数组中的第一项,它会返回0,而0是假的,所以您必须实际检查 -1,如果没有匹配,这就是 indexOf 返回的内容

if (mines.indexOf(value) != -1) {  ...

FIDDDLE

你最终会得到一点简化

var mines = [];
while (mines.length < 9){
var randomnumber = Math.ceil(Math.random() * 30);
if ( mines.indexOf(randomnumber) == -1 )
mines.push(randomnumber);
}

$(document).ready(function() {
$(".blank").click(function() {
var isBomb = mines.indexOf( parseInt( this.value, 10 )) != -1;
$(this).removeClass('blank').addClass(isBomb ? 'bomb' : 'safe');
});
});

FIDDLE

关于javascript - 检查数组中是否找到值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26858012/

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