#javascript #arrays
Вопрос:
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) =gt; { return '
Я хочу дать имени пользователя бессмысленное слово в конце, которое находится внутри randomWord
. Я бы хотел, чтобы это было похоже frank440donec
и username
в конце каждому давалось другое бессмысленное слово, но это дает всем именам другое бессмысленное слово, за исключением двух, которым присвоено одно и то же бессмысленное слово.
Комментарии:
1. Ну, у вас есть только четыре случайных слова, так что вероятность выбора каждого слова при каждом вызове обратного вызова составляет 25%.
2. Когда вы получите случайное число, вы можете удалить эту работу из
randomWord
массива, тогда вы получите уникальный элемент из этого массива, но у вас должно быть достаточно элементов вrandomWord
массиве
Ответ №1:
Если цель состоит в том, чтобы случайным образом назначить-избегая дубликатов-из набора имен, то хорошим решением будет перетасовать имена...
// names must be at least the length of the people array const names = ['donec', 'pellentesque', 'facilisis', 'potenti']; shuffle(names); const userNameGenerator = (person, index) =gt; { 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 gt; 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))
Комментарии:
1. "большое вам спасибо"
(person.value * 10 / 5 * 15 200) }; const sentenceGenerator = (person) =gt; { return person.name ' is ' person.age ' who works as a ' person.position } const userNameGenerator = (person, ) =gt; { 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);
Я хочу дать имени пользователя бессмысленное слово в конце, которое находится внутри randomWord
. Я бы хотел, чтобы это было похоже frank440donec
и username
в конце каждому давалось другое бессмысленное слово, но это дает всем именам другое бессмысленное слово, за исключением двух, которым присвоено одно и то же бессмысленное слово.
Комментарии:
1. Ну, у вас есть только четыре случайных слова, так что вероятность выбора каждого слова при каждом вызове обратного вызова составляет 25%.
2. Когда вы получите случайное число, вы можете удалить эту работу из
randomWord
массива, тогда вы получите уникальный элемент из этого массива, но у вас должно быть достаточно элементов вrandomWord
массиве
Ответ №1:
Если цель состоит в том, чтобы случайным образом назначить-избегая дубликатов-из набора имен, то хорошим решением будет перетасовать имена…
Комментарии:
1. «большое вам спасибо»