Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .push(arr[索引]); } 返回tmp; }_Javascript_Random - Fatal编程技术网

Javascript .push(arr[索引]); } 返回tmp; }

Javascript .push(arr[索引]); } 返回tmp; },javascript,random,Javascript,Random,要从数组中获取随机项,请使用 let rndItem=a=>a[rnd()*a.length | 0]; 设rnd=()=>crypto.getRandomValues(新的uint32数组(1))[0]/2**32; var myArray=['一月'、'二月'、'三月']; log(rndItem(myArray))使这更简单易读: console.log(rando(['一月','二月','三月]).value) 寻找一条真正的单行线我想到了这一点: ['January', 'Febr

要从数组中获取随机项,请使用

let rndItem=a=>a[rnd()*a.length | 0];
设rnd=()=>crypto.getRandomValues(新的uint32数组(1))[0]/2**32;
var myArray=['一月'、'二月'、'三月'];
log(rndItem(myArray))
使这更简单易读:

console.log(rando(['一月','二月','三月]).value)

寻找一条真正的单行线我想到了这一点:

['January', 'February', 'March'].reduce((a, c, i, o) => { return o[Math.floor(Math.random() * Math.floor(o.length))]; })

通过在数组原型上添加一个方法,可以很容易地获得随机值

在本例中,您可以从数组中获取单个或多个随机值

您可以通过单击snippet按钮来运行测试代码

Array.prototype.random=函数(n){
如果(n&&n>1){
常数a=[];
对于(设i=0;i方法1:

  • 使用Math.random()函数获取(0-1,1)之间的随机数 独家)
  • 将其乘以数组长度得到数字 介于(0-arrayLength)之间
  • 使用Math.floor()获取索引范围 从(0到阵列长度-1)
常量arr=[“foo”,“bar”];
const randomlypeckedstring=arr[Math.floor(Math.random()*arr.length)]; console.log(randomlyPickedString)

方法2:

  • 随机(a,b)方法用于生成介于(a到b,b互斥)之间的数字
  • 使用下限值将数字范围从(1到arrayLength)
  • 减去1得到范围为(0到arrayLength-1)的索引
常量arr=[“foo”,“bar”];
const randomlypeckedstring=arr[Math.floor(random(1,5))-1]; console.log(randomlyPickedString)



@SapphireSun这是正确的。注意
Math.floor(Math.random(…)
调用,它取整了。啊,我学到了一些新的东西。我在讨论它正好等于1的情况,但显然(根据W3Schools)Math.random介于0和1之间。我的错。我可能错了,但我记得
var rand=myArray[Math.random()*myArray.length>>0]
稍快您的答案总是给出第一个数组?不是给出随机值我更喜欢这个变量:
var rand=myArray[Math.random()*myArray.length | 0]
当有人否决它时,我不在这里,我也没有否决它,但我的猜测是,将它暴露在窗口中基本上就是声明一个全局变量。请参阅:您不应该在数组上,甚至在一般情况下,在
中为…使用
。您要冒着遍历原型链的风险。它也适用于对象的所有属性,而不是所有属性数组中的骰子。如果要在数组中使用迭代器,请使用(var i=0;i
。更好的是,使用类似于
数组.原型.forEach
的东西。我不喜欢这样,因为它污染了全局范围。你可以说这可能是唯一的一个,但它会让人养成违反这一良好做法的习惯。我很困惑为什么
concat
在这里不断变化…
random
本身不是如果不更改它,则不会多次调用任何其他函数…此解决方案不完全合理。为什么要创建一个名为concat的变量?对于这样一个简单的问题,为整个库添加依赖项是不必要的,并且会增加代码膨胀。如果有任何问题,您可以从
Faker推荐实际方法
选择一个随机数组元素。“简单问题”像这样的问题通常由库来解决,这些库为数百人已经面临的问题提供了一个简单的解决方案。这些库通常是健壮的、经过良好调试的,并且处理我们不想重新实现的各种警告。通常情况下,我会建议使用库。而不是您应该使用的从库中复制这一方法并将其放入utils文件中当库被发送到web浏览器时,应该评估其成本/收益WRT页面权重的建议是合理的建议,我衷心同意将Faker.js发送到浏览器将是荒谬的。然而,问题并没有提到哪个js运行时是正确的ng已使用。对于基于NodeJS的运行时,更重的依赖关系是完全合理的,这是我在Cucumber js测试套件中使用Faker.js的情况。此答案使用与已接受答案相同的解决方案。您应该避免添加相同的解决方案两次,而只提出可能的其他替代方案,以避免向对话致敬。这样做有什么用?@KenSharp它允许您调用
.sample()
在任何数组上获取随机项都应该避免扩展本机对象类型。我删除了我的答案,因为它被大量提升,但推广了不好的做法。有关此问题的更多讨论,请参阅例如和@MarkusAmaltheaMagnuson,这是一个好观点。但是,在原型上定义自定义方法不一定是问题,特别是如果在库代码之外谨慎地这样做的话,这个原型提供了一个非常漂亮的替代解决方案(以我的主观观点)并且暴露了语言中有时被忽略但有趣的部分,至少在少用的情况下是如此。对于几乎所有的应用程序代码来说,这不会引起问题,因此归结为品味问题。
|0
做了什么?它会将Float变成Int,与Math.floor一样。@KenSharp
|0
本身是一个不做任何事情的按位操作,但在javascript中,浮点数是。因此,它就像
+'
不做任何事情,但可以用来将内容转换为字符串。它与
Math.floor
不同,但在这里它是正确的操作。它是一个运算符,因此它比
Math.floor
更快,如果只是因为在运行某些代码c的任何时候一个do
Math.floor=someOtherFunction
,它们不能对“|”执行相同的操作。另一方面,对于
Math.floor
|
不同,请尝试
Math.floor(-1.5)
-1.5 | 0
。顺便说一句
const randomElement = array[Math.floor(Math.random() * array.length)];
window.choice = function() {
  if (!this.length || this.length == 0) return;
  if (this.length == 1) return this[0];
  return this[Math.floor(Math.random()*this.length)];
}
var rand = window.choice.call(array)
var result = ['January', 'February', 'March'][Math.floor(Math.random() * 3)]
// will return one item randomly from the array
_.sample(['January', 'February', 'March']);
// will return two items randomly from the array using underscore
_.sample(['January', 'February', 'March'], 2);
// will return two items randomly from the array using lodash
_.sampleSize(['January', 'February', 'March'], 2);
Array.prototype.sample = function(){
  return this[Math.floor(Math.random()*this.length)];
}
[1,2,3,4].sample() //=> a random element
const randomChoice = arr => {
    const randIndex = Math.floor(Math.random() * arr.length);
    return arr[randIndex];
};
$scope.ctx.skills = data.result.skills;
    $scope.praiseTextArray = [
    "Hooray",
    "You\'re ready to move to a new skill", 
    "Yahoo! You completed a problem", 
    "You\'re doing great",  
    "You succeeded", 
    "That was a brave effort trying new problems", 
    "Your brain was working hard",
    "All your hard work is paying off",
    "Very nice job!, Let\'s see what you can do next",
    "Well done",
    "That was excellent work",
    "Awesome job",
    "You must feel good about doing such a great job",
    "Right on",
    "Great thinking",
    "Wonderful work",
    "You were right on top of that one",
    "Beautiful job",
    "Way to go",
    "Sensational effort"
  ];

  $scope.praiseTextWord = $scope.praiseTextArray[Math.floor(Math.random()*$scope.praiseTextArray.length)];
<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>

var myArray = ['January', 'February', 'March', 'April', 'May'];    

var rand = Math.floor(Math.random() * myArray.length);

var concat = myArray[rand];

function random() {
   document.getElementById("demo").innerHTML = (concat);
}
</script>

<button onClick="random();">
Working Random Array generator
</button>

</body>
</html>
var myArray = ['January', 'February', 'March']; 
var rand = myArray[(Math.random() * myArray.length) | 0]
//For Search textbox random value
var myPlaceHolderArray = ['Hotels in New York...', 'Hotels in San Francisco...', 'Hotels Near Disney World...', 'Hotels in Atlanta...'];
var rand = Math.floor(Math.random() * myPlaceHolderArray.length);
var Placeholdervalue = myPlaceHolderArray[rand];

alert(Placeholdervalue);
function getRandomElementsFromArray(array, numberOfRandomElementsToExtract = 1) {
    const elements = [];

    function getRandomElement(arr) {
        if (elements.length < numberOfRandomElementsToExtract) {
            const index = Math.floor(Math.random() * arr.length)
            const element = arr.splice(index, 1)[0];

            elements.push(element)

            return getRandomElement(arr)
        } else {
            return elements
        }
    }

    return getRandomElement([...array])
}
const Faker = require('faker');
Faker.random.arrayElement(['January', 'February', 'March']);
var myArray = ['January', 'February', 'March'];
function random(array) {
     return array[Math.floor(Math.random() * array.length)]
}
random(myArray);
var myArray = ['January', 'February', 'March'];
function random() {
     return myArray[Math.floor(Math.random() * myArray.length)]
}
random();
var myArray = ['January', 'February', 'March'];
function random() {
     return myArray[Math.floor(Math.random() * myArray.length)]
}
random();
var rand = myArray[~~(Math.random() * myArray.length)];
var number = Math.floor(14444323231.2); // => 14444323231
var number = 14444323231.2 | 0; // => 1559421343
function getArrayRandomElement (arr) {
  if (arr && arr.length) {
    return arr[Math.floor(Math.random() * arr.length)];
  }
  // The undefined will be returned if the empty array was passed
}
// Example 1
var item = getArrayRandomElement(['January', 'February', 'March']);

// Example 2
var myArray = ['January', 'February', 'March'];
var item = getArrayRandomElement(myArray);
['January', 'February', 'March'].reduce((a, c, i, o) => { return o[Math.floor(Math.random() * Math.floor(o.length))]; })