在字中的随机字母。 JavaScript的

时间:2018-02-03 15:07:33

标签: javascript shuffle

我需要用一个字来改变字母,但是我不能改变第一个和最后一个字母的位置。

这是我对shuffelWord的函数:

function shuffelWord(word) {
        var shuffledWord = '';
        word = word.split('');
        console.log("word", word);
        while (word.length > 0) {
            shuffledWord += word.splice(word.length * Math.random() << 0, 1);
        }
        return shuffledWord;
    }

我做错了什么?

2 个答案:

答案 0 :(得分:2)

你可以这样:

function shuffelWord(word) {
  word = word.split('');

  //Remove the first and the last letter
  let first = word.shift();
  let last = word.pop();

  //Shuffle the remaining letters
  for (let i = word.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i + 1));
    [word[i], word[j]] = [word[j], word[i]];
  }

  //Append and return
  return first + word.join("") + last;
}

let test = shuffelWord('javascript');

console.log(test);

答案 1 :(得分:0)

不要在数组中删除所有单词的字母,而是从中排除第一个和最后一个字母。还要为该数组使用另一个变量,这样您仍然可以访问原始单词,并可以再次附加第一个和最后一个字符:

function shuffelWord(word) {
    var shuffledWord = '';
    var letters = word.split('').slice(1, -1); // exclude first and last
    while (letters.length > 0) {
        shuffledWord += letters.splice(letters.length * Math.random() << 0, 1);
    }
    return word[0] + shuffledWord + word[word.length-1]; // include first and last
}