javascript - JS数组拼接由于某种原因没有删除索引

标签 javascript

这是我要发送的代码:

for (var com = 0; com < 10; com++) {
        var op = [0, 1, 2, 3];
        combo = op[Math.floor(Math.random() * op.length)];
        door1[com] = combo;
        op.splice(combo, 1);
        combo = op[Math.floor(Math.random() * op.length)];
        door2[com] = combo;
        op.splice(combo, 1);
        combo = op[Math.floor(Math.random() * op.length)];
        door3[com] = combo;
        op.splice(combo, 1);
        combo = op[Math.floor(Math.random() * op.length)];
        door4[com] = combo;
        eim.print(op.toString());
}

现在当我打印 op 数组时。我应该只得到 1 个值,因为我已经删除了其他索引。与接头。 但是当我打印结果10次时。我发现有些索引没有删除。 我正在尝试创建 4 个不同的组合。每个组合都与其他组合不同。

最佳答案

你正在做的是,

Array.splice(combo,1);

现在它试图做的是从索引为combo的数组中拼接一个元素,现在combo可以是任何值,但它不是索引。

你可以通过索引来尝试,FIDDLE

代码:

door1={}
door2={}
door3={}
door4={}
var index=null;
for (var com = 0; com < 10; com++) {
        var op = [0, 1, 2, 3];
        index=Math.floor(Math.random() * op.length)
        combo = op[index];
        door1[com] = combo;
        op.splice(index, 1);
        index=Math.floor(Math.random() * op.length)
        combo = op[index];
        door2[com] = combo;
        op.splice(index, 1);
        index=Math.floor(Math.random() * op.length)
        combo = op[index];
        door3[com] = combo;
        op.splice(index, 1);
        index=Math.floor(Math.random() * op.length)
        combo = op[index];
        door4[com] = combo;
        document.write(op.toString()+'<br>');
}

关于javascript - JS数组拼接由于某种原因没有删除索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375201/

相关文章:

javascript - 如何为下面的代码创建一组新的列而不是行?

javascript - AJAX:responseXML 返回 null,但 ResponseText 将 XML 作为字符串返回

javascript - jquery onclick事件需要点击两次

javascript - 如何在完成后自动关闭 Facebook Send Dialog (v2.9)?

javascript - 鼠标悬停时创建圆形火焰效果

javascript - 到达容器底部时 AJAX 加载

javascript - jQuery 检查输入字段的值并使用 if 1 或更大

javascript - 如何在不硬刷新的情况下升级新的 React 应用程序版本?

javascript - 如何计算输入的字符数及其操作?

javascript - 如何在没有 jQuery 的情况下使用 $http 发布 urlencoded 表单数据?