javascript - 在javascript中打乱一个单词
问题描述
我想制作一个打乱单词的系统,例如:Hello
-> llHoe
。问题是它有时会显示undefined
在控制台中,我找不到任何问题。
这是我制作的代码:
function GenerateWord() {
var Words = ["Hello", "Bye", "Tree"]
var RandomNumber = Math.floor((Math.random() * Words.length));
var CorrectAwnserString = Words[RandomNumber];
var CorrectAwnser = CorrectAwnserString.split("");
var WordToOrder = "";
for(i = CorrectAwnser.length; i > 0;) {
let RandomLetter = Math.floor((Math.random() * i));
WordToOrder = WordToOrder + CorrectAwnser[RandomLetter];
console.log(WordToOrder)
CorrectAwnser.splice(RandomLetter);
console.log(CorrectAwnser)
i = i - 1;
}
document.getElementById("OriginalWord").innerHTML = CorrectAwnserString;
document.getElementById("MessedWord").innerHTML = WordToOrder;
}
GenerateWord();
<div id="OriginalWord"></div>
<div id="MessedWord"></div>
解决方案
错误似乎与您拼接字符串的方式有关。您需要指定应该删除多少元素。我将您的代码改组了一点,并将其卡在更多控制台日志中,如下所示:
for(i = CorrectAwnser.length; i > 0;) {
let RandomLetter = Math.floor((Math.random() * i));
WordToOrder = WordToOrder + CorrectAwnser[RandomLetter];
console.log(CorrectAwnser,RandomLetter,CorrectAwnser[RandomLetter]);
console.log(WordToOrder)
CorrectAwnser.splice(RandomLetter); // should be CorrectAwnser.splice(RandomLetter, 1);
i = i - 1;
}
console.log({CorrectAwnserString,WordToOrder});
上面的代码给出了以下结果:
[ 'T', 'r', 'e', 'e' ] 1 r
r
[ 'T' ] 0 T
rT
[] 0 undefined
rTundefined
[] 0 undefined
{ CorrectAwnserString: 'Tree', WordToOrder: 'rTundefinedundefined' }
将 splice 语句更新到CorrectAwnser.splice(RandomLetter, 1);
日志后如下:
[ 'T', 'r', 'e', 'e' ] 3 e
e
[ 'T', 'r', 'e' ] 0 T
eT
[ 'r', 'e' ] 0 r
eTr
[ 'e' ] 0 e
eTre
{ CorrectAwnserString: 'Tree', WordToOrder: 'eTre' }
推荐阅读
- rust - 为什么要格式化!不能在return语句中使用?
- node.js - 在 Angular 应用程序中的浏览器上启动快速服务器
- c# - 如何获取当前项目文件夹路径?
- angular - 带有 Angularfire 的 Angular / Ionic:iOS:阻止了原点为“http://localhost:8100”的框架
- c# - Serilog 记录器接收器的最小和最大级别
- sql-server - CTE 之后的 IF 语句
- php - 带有 vue 和 Laravel 的 Pusher 仅适用于仪表板事件创建者
- java - 如何在 Java 中使用 toUpperCase() 更改字符
- spring-mvc - Spring-MVC - 从 web-jar 加载静态资源导致 WebSphere Liberty 中的异常
- java - Java 8:从列表的列表中获取属性