"use strict"; const vowels = "aeiou".split(""); const consonants = "bcdfghjklmnpqrstvwxyz".split(""); function random_item(arr) { return arr[Math.floor(Math.random() * arr.length)]; } export default function(word) { console.log(`***** MUTATE *****`) const chars = word.toLowerCase().split(""); const targetpos = Math.floor(Math.random() * word.length); const targetchar = chars[targetpos]; console.log("TARGET", targetchar, "POS", targetpos); let pool = consonants.concat(vowels); if(vowels.includes(targetchar)) pool = vowels; if(consonants.includes(targetchar)) pool = consonants; pool = [...pool]; // Shallow copy to avoid splice mutating the original array console.log("POOL BEFORE", pool); if(pool.includes(targetchar)) { console.log("REMOVING TARGET"); pool.splice(pool.indexOf(targetchar), 1); } console.log("POOL AFTER", pool); let newchar = random_item(pool); chars.splice(targetpos, 1, newchar); return chars.join(""); }