gpt4 book ai didi

javascript - 为什么 Javascript 将 5 == 8 等同于 true?

转载 作者:太空狗 更新时间:2023-10-29 13:06:47 25 4
gpt4 key购买 nike

所以我有 2 个复选框:

var statusList = [];
function updateStatusString(x) {
if (statusList != null) {
if (statusList.length > 0) {
for (var i = 0; i < statusList.length; i++) {
if (parseInt(statusList[i]) == parseInt(x)) {
statusList[i] = 123;
} else {
statusList.push(x);
}
}
} else {
statusList.push(x);
}
}
alert(statusList);
}
<label>&nbsp;<input type="checkbox" name="Active" value="5" onchange=updateStatusString("5")>&nbsp;"Active"</label>
<label>&nbsp;<input type="checkbox" name="NonActive" value="8" onchange=updateStatusString("8")>&nbsp;"Active"</label>

当我点击一个复选框时,它会将它添加到 JavaScript 列表中,如果它已经在列表中,我想用另一个值(在本例中为 123)覆盖它。

但是当我点击第二个时(顺序无关紧要,出于某种原因,第二个元素始终为 123。

如我所料,如果我单击顶部的复选框,它将是一个包含“5”的列表,然后单击第二个复选框,我期望为 5,8,但它会提示为 5,123,真的不明白为什么要这样做,因为 5==8 是错误的...有什么想法吗?

更新算法以解决潜在问题:

万一有人发现这个有用,我将算法更改为更好的替代方案:

var statusList = [];
function updateStatusString(x) {
if (statusList.length > 0) {
if (statusList.includes(x)) {
var idx = statusList.indexOf(x);
if (idx != -1) {
statusList.splice(idx, 1);
}
}
else {
statusList.push(x);
}
} else {
statusList.push(x);
}
alert(statusList);
}

最佳答案

第一次迭代:

因为状态列表是空的,所以你要在其中添加 5,

第二次迭代:

statulsList = [5]

你添加了 8,所以现在 statusList 的值为 [5,8],这意味着长度也为 2,

因此我们进行了第三次迭代,在本例中为 8 === 8。

如果你想让它有所不同,请在将其他项目添加到列表之前保存状态列表的长度。

var statusList = [];
function updateStatusString(x) {
if (statusList != null) {
if (statusList.length > 0) {
var lengthStat = statusList.length;
for (var i = 0; i < lengthStat; i++) {
if (parseInt(statusList[i]) == parseInt(x)) {
statusList[i] = 123;
} else {
if(! (statusList.indexOf(x) != -1))
statusList.push(x);
}
}
} else {
statusList.push(x);
}
}
alert(statusList);
}
<label>&nbsp;<input type="checkbox" name="Active" value="5" onchange=updateStatusString("5")>&nbsp;"Active"</label>
<label>&nbsp;<input type="checkbox" name="NonActive" value="8" onchange=updateStatusString("8")>&nbsp;"Active"</label>

关于javascript - 为什么 Javascript 将 5 == 8 等同于 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56540527/

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