javascript - 在 JavaScript 中从数组中选择随机元素会返回整个数组
问题描述
我正在编写一个程序来使用 JavaScript 猜测输入,为此我必须从数组中选择一个随机元素。但是,在尝试使用 Chrome DevTools 对其进行调试后,我发现它返回的是整个数组,而不仅仅是元素。编辑:我还确保它与用于选择随机元素的方法无关。这是一些代码:
var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9","~","`","!","@","#","$","%","^","&","*","(",")","-","_","=","+","[","]","{","}","\\","|",";",":","'","\"",",","<",".",">","/","?"," "]
var charset = [];
if(document.getElementById("lowercase").checked){
charset.push(alphabet.slice(0, 26));
}
if(document.getElementById("uppercase").checked){
charset.push(alphabet.slice(26, 52));
}
if(document.getElementById("numbers").checked){
charset.push(alphabet.slice(52, 62));
}
if(document.getElementById("special").checked){
charset.push(alphabet.slice(62, alphabet.length));
}
var word = document.getElementById("input").value;
var foundword = "";
while(true) {
for(i = 0; i < word.length; i++) {
foundword += charset[Math.floor(Math.random() * charset.length)];
}
if(word == foundword) {
alert("done");
break;
}
foundword = "";
}
有人可以帮忙吗?提前致谢!
解决方案
alphabet.slice
返回一个数组。
当你charset.push(alphabet.slice(.......))
推送一个数组时,最后charset
是一个数组数组。
您可以使用扩展运算符 - ...
- 将推送的数组转换为一系列值:
charset.push(...alphabet.slice(26, 52));
只是为了帮助您习惯语法,这里有几个例子:
let arr = alphabet.slice(26, 52);
charset.push(...arr);
charset.push(...['a', 'b', 'c']);
推荐阅读
- vue.js - 等待异步 forEach
- reactjs - 反应不返回正确的ID
- qt - QML TextArea onEditingFinished On Enter
- android - 颤振或普通android项目中的android studio arctic fox bug(类已加密)
- angular12 - 我想在对表格进行排序后将数据下载为 json 对象
- python - 根据 django 中的年份选择显示图表
- python - Python Flask无法链接不是模板的现有html
- apache-kafka - spring cloud stream自定义值反序列化器不起作用
- r - Excel求解器在R中复制
- angular - 在 AppComponent 构造函数中添加 OAuthService 后 UI 无法正常工作