简体   繁体   English

Javascript:如何创建一个函数,该函数可以从固定数量的类中生成 X 数量的对象?

[英]Javascript: How do I create a function that can generate an X amount of objects drawing from fixed amount of classes?

For my coding assignment, I'm tasked with creating a function that can generate an X amount of objects drawing from fixed amount of classes.对于我的编码任务,我的任务是创建一个函数,该函数可以从固定数量的类中生成 X 数量的对象。 But while the objects are being generated, I would like to store those objects in an array.但是在生成对象时,我想将这些对象存储在一个数组中。 How would I go about doing this in Javascript?我将如何在 Javascript 中执行此操作?

Pretty much the same as you would do for two objects.与您对两个对象所做的几乎相同。 Just use the length of the array to pick a random element, and use a loop to perform the action X times:只需使用数组的长度选择一个随机元素,并使用循环执行 X 次操作:

 /* Class definitions */ function Animal(){ var a = document.createElement('div'); a.className = 'animal'; return a} function Horse(){ var a = new Animal(); a.className += ' horse'; return a } function Pig(){ var a = new Animal(); a.className += ' pig'; return a } function Rat(){ var a = new Animal(); a.className += ' rat'; return a } /* Variable definitions */ var animals = ['Horse', 'Pig', 'Rat'], output = document.getElementById('output'), numberOfDraws = 5, res = []; /* Auxiliary functions */ // Returns a random element from a given array function pickRandom(arr){ return arr[ Math.floor( Math.random()*arr.length ) ]; } /* Main script */ // Pick a random object 5 times, store it in 'res' and show it for(var i = 0; i < numberOfDraws; i++){ res.push( eval('new ' + pickRandom(animals) + '()') ); output.appendChild( res[i] ); }
 .animal{float:left;padding:40px;background-size:100%}.horse{background-image:url(https://pbs.twimg.com/profile_images/587037647966613504/Mk5oEKsb.png)}.pig{background-image:url(https://33.media.tumblr.com/avatar_c2b180faa484_128.png)}.rat{background-image:url(http://38.media.tumblr.com/avatar_614c66cef635_128.png)}
 <pre id="output"></pre>

EDIT: To get an instance of the class, you can eval the class name.编辑:要获取类的实例,您可以eval类名。 See the demo above.请参阅上面的演示。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将结果从 javascript 传递给 laravel 函数作为数量? - How can I pass RESULT from javascript to laravel function as amount? 如何创建一个输出类的各种实例的“ x”数量的函数? - How can I create a function that outputs 'x' amount of various instances of a class? 如果元素在视口中停留X倍的时间,如何触发函数? - How can I trigger a function if an element is in the viewport for X amount of time? 如何编写一个需要X秒钟的函数? - How can I write a function that takes X amount of seconds? 你如何在JavaScript的Y和Z范围之间随机生成X个数字? - How do you randomly generate X amount of numbers, between the range of Y and Z in JavaScript? 如何在响应图像和下面的元素之间创建固定数量的空间? - How do I create a fixed amount of space between a responsive image and an element below? 如何根据我指定的某些条件创建 X 数量的单独数组? - How do I create an X amount of separate arrays based on certain conditions I specify? 如何让JavaScript在每X个像素数滚动时执行某些操作 - How to make JavaScript do something every X amount of pixels scrolled 如何将类添加到未指定数量的元素 - How do I add classes to an unspecified amount of elements 如何创建循环进度条,可以将总额从100%更改为任何其他值? - How do I create a circular progress bar that I can change the total amount from 100% to any other value?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM