我需要用一个字来改变字母,但是我不能改变第一个和最后一个字母的位置。
这是我对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;
}
我做错了什么?
答案 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
}