Как упростить код дразнилки на JavaScript? (новичок)
let randomBodyPart = ["видок", "лицо", "походняк"];
let randomAdjective = ["вонючий", "унылый", "недобитый", "пришибленный"];
let randomWords = ["мурлокотан", "долбик", "древопитек"];
let randomBodyPart$ = randomBodyPart[Math.floor(Math.random()*randomBodyPart.length)];
let randomAdjective$ = randomAdjective[Math.floor(Math.random()*randomAdjective.length)];
let randomWords$ = randomWords[Math.floor(Math.random()*randomWords.length)];
let result = `У тебя ${randomBodyPart$}, как-будто ты ${randomAdjective$} ${randomWords$}`;
попытался упростить так:
let randomBodyPart = ["видок", "лицо", "походняк"];
let randomAdjective = ["вонючий", "унылый", "недобитый", "пришибленный"];
let randomWords = ["мурлокотан", "долбик", "древопитек"];
let randomizer$ = Math.floor(Math.random()*this.length);
let result = `У тебя ${randomBodyPart[randomizer$]}, как-будто ты ${randomAdjective[randomizer$]} ${randomWords[randomizer$]}`;
Но "так" не работает сам гсч, я видимо не правильно понял принцип работы "this".
PS:
есть ли какой-то аналог "this", что бы использовать его по принципу:
let randomizer$ = Math.floor(Math.random()*this.length);
Ответы (4 шт):
Автор решения: MoloF
→ Ссылка
const bodyPart = ["видок", "лицо", "походняк"];
const adjective = ["вонючий", "унылый", "недобитый", "пришибленный"];
const words = ["мурлокотан", "долбик", "древопитек"];
Array.prototype.random = function() {
return this[Math.floor(Math.random()*this.length)];
}
const randomBodyPart = bodyPart.random();
const randomAdjective = adjective.random();
const randomWords = words.random();
p.innerHTML = `У тебя ${randomBodyPart}, как-будто ты ${randomAdjective} ${randomWords}`;
<p id="p"></p>
Автор решения: MoloF
→ Ссылка
const bodyPart = ["видок", "лицо", "походняк"];
const adjective = ["вонючий", "унылый", "недобитый", "пришибленный"];
const words = ["мурлокотан", "долбик", "древопитек"];
function randomElementFromArray() {
return this[Math.floor(Math.random()*this.length)];
}
const randomBodyPart = randomElementFromArray.call(bodyPart);
const randomAdjective = randomElementFromArray.call(adjective);
const randomWords = randomElementFromArray.call(words);
p.innerHTML = `У тебя ${randomBodyPart}, как-будто ты ${randomAdjective} ${randomWords}`;
<p id="p"></p>
Автор решения: MoloF
→ Ссылка
const bodyPart = ["видок", "лицо", "походняк"];
const adjective = ["вонючий", "унылый", "недобитый", "пришибленный"];
const words = ["мурлокотан", "долбик", "древопитек"];
const randomElementFromArray = (array) =>
array[Math.floor(Math.random()*array.length)];
const randomBodyPart = randomElementFromArray(bodyPart);
const randomAdjective = randomElementFromArray(adjective);
const randomWords = randomElementFromArray(words);
p.innerHTML = `У тебя ${randomBodyPart}, как-будто ты ${randomAdjective} ${randomWords}`;
<p id="p"></p>
Автор решения: Олег
→ Ссылка
let randomBodyPart = ["видок", "лицо", "походняк"][Math.floor(Math.random()*3)];
let randomAdjective = ["вонючий", "унылый", "недобитый", "пришибленный"][Math.floor(Math.random()*4)];
let randomWords = ["мурлокотан", "долбик", "древопитек"][Math.floor(Math.random()*3)];
let result = `У тебя ${randomBodyPart}, как-будто ты ${randomAdjective} ${randomWords}`;
alert(result);
А можно и вообще в виде одной строчки:
let result = `У тебя ${["видок", "лицо", "походняк"][Math.floor(Math.random()*3)]}, как-будто ты ${["вонючий", "унылый", "недобитый", "пришибленный"][Math.floor(Math.random()*4)]} ${["мурлокотан", "долбик", "древопитек"][Math.floor(Math.random()*3)]}`;
alert(result);