javascript - 单击按钮,一个接一个地列出数组元素

标签 javascript arrays

我是 Javascript 的新手,正在学习基础知识。我想创建一个数组,其单个元素是随机绘制的,一次一个,只需单击一个按钮,直到所有数组元素都显示在屏幕上。我的代码几乎就在那里。但问题是,当它运行时,它总是在第一次单击按钮时抓取 2 个元素,而不是 1 个。其余元素运行良好。当然会感谢对这个问题的一些见解。谢谢。

var myArray=['1','2','3','4','5','6','7']
var text = "";
var i;

function RandomDraw() {
    for(i = 0; i < myArray.length; i+=text) {
        var ri = Math.floor(Math.random() * myArray.length);
        var rs = myArray.splice(ri, 1);
        document.getElementById("showSplice").innerHTML = text+=rs;
        //document.getElementById("showArrayList").innerHTML = myArray;
    }
}

最佳答案

由于 i+=text,它“总是” 绘制 2 个元素。您的数组很小,因此循环需要 2 次迭代(cocatinating 字符串以获得数字 i)以遍历 myArray.length

First iteration:
   i = 0 => 0 < myArray.length => true
   prints number
Second iteration: (say '4' get choosen)
   i = i + text and text = '4' => i = "04" => "04" < myArray.length => true
   prints number
Third iteration: (say '3' get choosen)
   i = i + text and text = '43' => i = "0443" => "0443" < myArray.length => false
   loop breaks

因此有可能打印两个元素。根据数组的长度,可能会有更多。

你不需要循环,只需选择一个数字并打印它:

function RandomDraw() {
    if(myArray.length > 0) {                                     // if there still elements in the array
        var ri = Math.floor(Math.random() * myArray.length);     // do your job ...
        var rs = myArray.splice(ri, 1);
        document.getElementById("showSplice").textContent = rs;  // .textContent is better
    }
    else {
        // print a message indicating that the array is now empty
    }
}

关于javascript - 单击按钮,一个接一个地列出数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46037739/

相关文章:

javascript - Ember JS,在状态为 root.loaded.updated.uncommitted 的 Transformer 处理事件 `didCommit` 中解析数据时出错。”

javascript - 如何分隔数组值

arrays - 当我初始化一个 char 数组而不在 C 中设置数组大小时会发生什么

Python 使用数组拆分

javascript正则表达式解析数组语法字符串几乎可以工作

javascript - PrimeNG Autocomplete 不通过输入搜索查询显示任何建议

javascript - RXJS + Axios 错开网络请求

javascript - angularjs,$scope 参数如何在幕后工作?

javascript - AngularJS 中 Promise 的顺序和时间

arrays - 追加到列表/将键添加到 ansible 中的变量