紫影基地

 找回密码
 立即注册
查看: 165|回复: 0

[JavaScript] JavaScript - 随机获取数组元素

[复制链接]
阅读字号:

2002

主题

2117

帖子

21万

积分

超级版主

Rank: 8Rank: 8

积分
210303
发表于 2024-4-24 05:54:21 | 显示全部楼层 |阅读模式


1.应用场景

随机获取数组元素.
2.学习/操作

1.随机获取数组一个元素

var items = ['1','2','4','5','6','7','8','9','10'];

var item = items[Math.floor(Math.random()*items.length)];



解释:

Math.random()返回0到1之间的一个伪随机数,可能等于0,但是一定小于1



Math.floor方法返回小于参数值的最大整数(地板值)







结合起来:

随机获取一个0-1之间的小数, 然后乘以自身长度, 一定是一个大于等于0 小于自身长度的一个数.  如上面 长度为10, 则获取的一个随机数就为0-10之间的一个数[数组的下标].

最后根据下标获取数组元素值即可



2.随机获取几个元素

function getRandomArrayElements(arr, count) {
    var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;  //只是声明变量的方式, 也可以分开写
    while (i-- > min) {

        //console.log(i);
        index = Math.floor((i + 1) * Math.random()); //这里的+1 是因为上面i--的操作  所以要加回来
        temp = shuffled[index];  //即值交换
        shuffled[index] = shuffled;
        shuffled = temp;
        //console.log(shuffled);
    }
    return shuffled.slice(min);
}


var items = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
console.log( getRandomArrayElements(items, 4) );

截图:





解析:

思路就是将新拷贝一份数组, 然后将数组按照获取元素的次数, 每次将元素交换[从倒数第二个开始往前开始, 与随机获取的数组下标元素对调位置], 最后截取数组元素个数 返回结果.
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/william_n/article/details/106289102

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫影基地

GMT+8, 2025-1-12 12:15 , Processed in 0.084663 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表