我尝试对字符串使用 fisher-yates shuffle,但没有用
I tried using a fisher-yates shuffle for strings, but it didn't work
我尝试用 fisher-yates shuffle 打乱字符串,但是虽然它正确地获取了索引和值,但它没有打乱字符串,这是怎么回事?
globalVar = 'I am GLOBAL'
function scrambler(anyString) {
let placeHolder = anyString
for (let i = placeHolder.length - 1; i >= 0; i--) {
let swapIndex = Math.floor(Math.random() * (i + 1))
let chartoSwap = placeHolder[swapIndex]
let currentChar = placeHolder[i]
placeHolder[i] = chartoSwap
placeHolder[swapIndex] = currentChar
}
return placeHolder
}
let scrambled = scrambler(globalVar)
console.log(scrambled)
字符串是不可变的。把placeHolder
改成数组
globalVar = 'I am GLOBAL'
function scrambler(anyString) {
let placeHolder = anyString.split("")
for (let i = placeHolder.length - 1; i >= 0; i--) {
let swapIndex = Math.floor(Math.random() * (i + 1))
let chartoSwap = placeHolder[swapIndex]
let currentChar = placeHolder[i]
placeHolder[i] = chartoSwap
placeHolder[swapIndex] = currentChar
}
return placeHolder.join("")
}
let scrambled = scrambler(globalVar)
console.log(scrambled)
字符串是不可变的,您不能改变它们。阅读本文以获取更多信息:
String.prototype.replaceAt=function(index, replacement) {
return this.substr(0, index) + replacement+ this.substr(index + replacement.length);
}
我尝试用 fisher-yates shuffle 打乱字符串,但是虽然它正确地获取了索引和值,但它没有打乱字符串,这是怎么回事?
globalVar = 'I am GLOBAL'
function scrambler(anyString) {
let placeHolder = anyString
for (let i = placeHolder.length - 1; i >= 0; i--) {
let swapIndex = Math.floor(Math.random() * (i + 1))
let chartoSwap = placeHolder[swapIndex]
let currentChar = placeHolder[i]
placeHolder[i] = chartoSwap
placeHolder[swapIndex] = currentChar
}
return placeHolder
}
let scrambled = scrambler(globalVar)
console.log(scrambled)
字符串是不可变的。把placeHolder
改成数组
globalVar = 'I am GLOBAL'
function scrambler(anyString) {
let placeHolder = anyString.split("")
for (let i = placeHolder.length - 1; i >= 0; i--) {
let swapIndex = Math.floor(Math.random() * (i + 1))
let chartoSwap = placeHolder[swapIndex]
let currentChar = placeHolder[i]
placeHolder[i] = chartoSwap
placeHolder[swapIndex] = currentChar
}
return placeHolder.join("")
}
let scrambled = scrambler(globalVar)
console.log(scrambled)
字符串是不可变的,您不能改变它们。阅读本文以获取更多信息:
String.prototype.replaceAt=function(index, replacement) {
return this.substr(0, index) + replacement+ this.substr(index + replacement.length);
}