Javascript:仅按单词随机播放

标签 javascript jquery

请看下面我的代码。当它洗牌时,它也会洗牌空间。我想按单词打乱顺序。

例如

  • eHllo rWold
  • Hello World

但是当我洗牌时,空间无处不在,还有字符串。请看下面:

  • olHlwod lre
  • 坚持不懈

谢谢

<!DOCTYPE html>
<html>
<head>
<style>
  * { font-family: Calibri; }
  p, input {font-size: 18px; }
</style>
</head>

<body>
  <h2>
    Click button to shuffle characters of the below string
  </h2>
  <p>
  </p>
  
  <p>
    <input type='button' value='Click to shuffle' id='bt' onclick='shuffle("Hello world")' />
  </p>
  
  <p id='result'></p>
</body>

<script>
  let shuffle = (s) => {
    
    let arr = s.split(''), arr_len = arr.length;
    
    while (arr_len) {
      let rnd = Math.floor(Math.random() * arr_len--);
      [arr[arr_len], arr[rnd]] = [arr[rnd] , arr[arr_len]];
    }
    
    let str = arr.join('');
    
    // show shuffled characters.
    document.getElementById('result').innerHTML = str;
  }
</script>
</html>

最佳答案

您可以按空格拆分并分别打乱每个部分。

let shuffle = (s) => {
  let arr = [...s], arr_len = arr.length;
  while (arr_len) {
    let rnd = Math.floor(Math.random() * arr_len--);
    [arr[arr_len], arr[rnd]] = [arr[rnd], arr[arr_len]];
  }
  return arr.join('');
}
document.getElementById('bt').addEventListener('click', e => {
  let text = "Hello world";
  let res = text.split(/\s+/).map(shuffle).join(' ');
  document.getElementById('result').textContent = res;
});
<h2>Click button to shuffle characters of the below string</h2>
<p><input type='button' value='Click to shuffle' id='bt'/></p>
<p id='result'></p>

关于Javascript:仅按单词随机播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75147275/

相关文章:

javascript - 在单独的选项卡上插入两次内容脚本?

javascript - rails : Disable form field when checkbox is checked

javascript - 使用 Jquery 的多实例音频播放/暂停

javascript - 从 Ajax 函数的代码隐藏中调用 C# 函数

Javascript onclick 如果 iframe 存在,删除它并创建新的 iframe?

jQuery:检查列是否包含特定值

javascript - 如何克隆 cakephp 元素的元素

javascript - 使用对话框不起作用?

javascript - 如何在 RxJs 中将间隔流与 Promise 流结合起来并获取值?

javascript - 位置 :absolute div inside another position:absolute div and making them position:fixed