var items = Array(523, 3452, 334, 31, ..., 5346);
如何从 items
中获取随机项?
var items = Array(523, 3452, 334, 31, ..., 5346);
如何从 items
中获取随机项?
var item = items[Math.floor(Math.random()*items.length)];
`var items = ["a","e","i","o","u"]`
`var objResults = {}`
`for(var i = 0; i < 1000000; i++){`
`var randomElement = items[Math.floor(Math.random()*items.length)]`
`if (objResults[randomElement]){`
`objResults[randomElement]++`
`}else{`
`objResults[randomElement] = 1`
`}`
`}`
`console.log(objResults)`
在一百万次迭代后,结果相当随机:`Object {u: 200222, o: 199543, a: 199936, e: 200183, i: 200116}`
- Johann Echavarriaitems[items.length * Math.random() | 0]
:) - aloisdg1. 解决方案:定义数组原型
Array.prototype.random = function () {
return this[Math.floor((Math.random()*this.length))];
}
能够在内联数组上运行的代码
[2,3,5].random()
当然还有预定义数组
var list = [2,3,5]
list.random()
2. 解决方案:定义一个自定义函数,该函数接受列表并返回元素。
function get_random (list) {
return list[Math.floor((Math.random()*list.length))];
}
get_random([2,3,5])
for (let i in arr)
循环中,它迭代了所有预期的索引,并且还迭代了一个"rand"的索引。不得不切换到for (let i=0,l=arr.length;i<l;i++)
循环来修复它。 - OXiGENitems.random=function() {return this[Math.floor(Math.random()*this.length)];}
。这样,您可以调用该方法,如 items.random()
,而不必涉及对原型的篡改争议。 - Manngo使用下划线(或者 loDash :)):
var randomArray = [
'#cc0000','#00cc00', '#0000cc'
];
// use _.sample
var randomElement = _.sample(randomArray);
// manually use _.random
var randomElement = randomArray[_.random(randomArray.length-1)];
或者要打乱整个数组:
// use underscore's shuffle function
var firstRandomElement = _.shuffle(randomArray)[0];
_.sample([1, 2, 3, 4, 5, 6])
。 - Mikael Lepistö如果你真的必须使用jQuery来解决这个问题(注意:你不应该这样做):
(function($) {
$.rand = function(arg) {
if ($.isArray(arg)) {
return arg[$.rand(arg.length)];
} else if (typeof arg === "number") {
return Math.floor(Math.random() * arg);
} else {
return 4; // chosen by fair dice roll
}
};
})(jQuery);
var items = [523, 3452, 334, 31, ..., 5346];
var item = jQuery.rand(items);
这个插件可以在给定一个数组时返回随机元素,给定一个数字时返回[0 .. n)范围内的值,对于其他任何给定的内容,都会返回保证随机的值!
为了增加趣味性,当给定一个数组时,通过基于数组长度的递归调用函数来生成随机值 :)
可在http://jsfiddle.net/2eyQX/查看工作演示。
$
在每行至少没有使用一次,因此它没有足够的 jQuery。 - user6560716以下是另一种方法:
function rand(items) {
// "~~" for a closest "int"
return items[~~(items.length * Math.random())];
}
或者按照以下建议,由@1248177提供:
function rand(items) {
// "|" for a kinda "int div"
return items[items.length * Math.random() | 0];
}
~~
是什么?我以前在JS中从未见过它。 - Sam Sternitems[items.length * Math.random() | 0]
:) - aloisdgvar random = items[Math.floor(Math.random()*items.length)]
// 1. Random shuffle items
items.sort(function() {return 0.5 - Math.random()})
// 2. Get first item
var item = items[0]
更短:
var item = items.sort(function() {return 0.5 - Math.random()})[0];
更加简短的版本(由José dB.提供):
let item = items.sort(() => 0.5 - Math.random())[0];
items[1]
是第二个项目,第一个是 items[0]
。 - Linus Unnebäcklet item = items.sort(() => 0.5 - Math.random())[0];
- José dB.jQuery是JavaScript!它只是一个JavaScript框架。因此,要查找随机项,只需使用纯旧JavaScript,例如:
var randomItem = items[Math.floor(Math.random()*items.length)]
var rndval=items[Math.floor(Math.random()*items.length)];
var items = Array(523,3452,334,31,...5346);
function rand(min, max) {
var offset = min;
var range = (max - min) + 1;
var randomNumber = Math.floor( Math.random() * range) + offset;
return randomNumber;
}
randomNumber = rand(0, items.length - 1);
randomItem = items[randomNumber];
来源:
Math.floor(Math.random() * (max - min + 1)) + min
。 - Solomon Ucko