gpt4 book ai didi

javascript - 从数组获取非重复索引在 0 处失败

转载 作者:行者123 更新时间:2023-12-02 14:59:53 26 4
gpt4 key购买 nike

我有以下函数,它从数组中返回一个随机的非重复索引,不断将它们拉出,直到所有索引都被使用,然后重置自身并开始重新使用它们。

它还确保最后一个拉出的索引与重置时拉出的下一个索引不同,这样就不会连续出现相同的索引。

var listIndexes = [];
var lastIndex;

function getRandomIndex(indexes)
{
if (!listIndexes.length) {
for (var i = 0; i < indexes; i++) {
listIndexes.push(i);
}
}

var randomIndex = Math.floor(Math.random() * listIndexes.length);
var uniqueIndex = listIndexes[randomIndex];

listIndexes.splice(randomIndex, 1);

if(lastIndex && uniqueIndex == lastIndex)
{
listIndexes = [];
return getRandomIndex(indexes);
}

lastIndex = uniqueIndex;

return uniqueIndex;
}

var index = getRandomIndex(5);

console.log(index);

但是我发现如果lastIndexuniqueIndex都是0,那么它会返回它,所以我得到索引0 连续返回(无论重置如何),这破坏了条件点以防止这种情况发生。

为什么会发生这种情况? 0 有何特别之处,打破了逻辑?

最佳答案

lastIndex && uniqueIndex == lastIndex 对于 0 ( see MDN: Falsy for more details ) 为假。

对于0,给定的方程将为0 && true,这将导致0

您很可能应该使用 lastIndex !== undefined && uniqueIndex == lastIndex 来代替。因为这样你就可以严格比较 lastIndex 是否已设置或是否仍然 undefined

关于javascript - 从数组获取非重复索引在 0 处失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503188/

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