const people = [{ name: 'frank', age: 20, position: 'front-end-developer', value: 7 }, { name: 'craig', age: 27, position: 'back-end-developer', value: 7 }, { name: 'peter', age: 23, position: 'database-manager', value: 6 }, { name: 'andy', age: 29, position: 'full-stack-developer', value: 9 } ]; const salaryGenerator = (person) => { return '$' + (person.value * 10 / 5 * 15 + 200) }; const sentenceGenerator = (person) => { return person.name + ' is ' + person.age + ' who works as a ' + person.position } const userNameGenerator = (person, ) => { const randomWord = ['donec', 'pellentesque', 'facilisis', 'potenti'] return person.name + (person.age * person.value + 300) + randomWord[Math.floor(Math.random() * randomWord.length)] } const salary = people.map(salaryGenerator) const sentence = people.map(sentenceGenerator) const userName = people.map(userNameGenerator) console.log(salary) console.log(sentence); console.log(userName); Quiero darle al nombre de usuario una palabra sin sentido al final que está en randomWord . Me gustaría que fuera como frank440donec y le diera a cada nombre de username una palabra diferente sin sentido al final, pero le da a todos los nombres una palabra diferente sin sentido excepto dos a los que se les asigna la misma palabra sin sentido.
Si el objetivo es asignar aleatoriamente, evitando duplicados, de un conjunto de nombres, entonces una buena solución es barajar los nombres...
// names must be at least the length of the people array const names = ['donec', 'pellentesque', 'facilisis', 'potenti']; shuffle(names); const userNameGenerator = (person, index) => { const randomWord = names[index]; const ageXValue = person.age*person.value+300; return `${person.name}${ageXValue}${randomWord}`; } // shuffle based on https://stackoverflow.com/a/12646864/294949 function shuffle(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); const temp = array[i]; array[i] = array[j]; array[j] = temp; } } const people = [{ name: 'frank', age: 20, position: 'front-end-developer', value: 7 }, { name: 'craig', age: 27, position: 'back-end-developer', value: 7 }, { name: 'peter', age: 23, position: 'database-manager', value: 6 }, { name: 'andy', age: 29, position: 'full-stack-developer', value: 9 } ]; console.log(people.map(userNameGenerator))