Я заменяю все символы в массиве случайными буквами/цифрами. Однако дублирующиеся буквы не получают одинаковые значения, которые я хочу.
var rWords = ["all","ball","balloon"];
var word = rWords[Math.floor(Math.random() * rWords.length)];
var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var getPos = function(arr) {
return Math.floor(Math.random() * arr.length);
}
var arr = word.split('');
for (var i = 0; i < word.length; i++) {
arr.splice(getPos(arr), 1, letters[getPos(letters)]);
}
word = arr.join('');
Я хочу, чтобы на выходе было что-то вроде:
all = 4xx, ball = Y4xx, balloon = Y4xxRR1
создайте функцию map
которая возвращает уникальный символ для того же ввода (для каждого символа, который мы хотим заменить, мы проверяем, есть ли у нас уже замена для него, хранящегося в _map
, если нет, то мы найдем его и используем его и сохраним в _map
для будущего использования )
var rWords = ["all","ball","balloon"];
var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var _map = {}
function map(char) {
if (_map[char] === undefined) {
_map[char] = letters[Math.floor(Math.random() * letters.length)]
}
return _map[char]
}
var result = rWords.map(function(word) {
var arr = word.split('');
for (var i = 0; i < word.length; i++) {
arr.splice(i, 1, map(arr[i]));
}
return arr.join('');
})
console.log(result);