javascript - 一个数组从另一个数组中随机取元素

查看:92
本文介绍了javascript - 一个数组从另一个数组中随机取元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有一个数组a=[4,19,23,44,56,1],新建一个数组b,b从a中一次随机选取一个元素,取完为止。用JavaScript实现

解决方案

可以用伪随机对a进行洗牌,取任意两个位置的数字进行交换,如此进行n次达到洗牌效果,然后赋值给b。

或者直接按照步骤来,如果不考虑代码效率的话,lodash库提供的数组操作可以使代码更优雅:

var src = [4,19,23,44,56,1];

var shuffle = [];
while(src.length > 0){
    var random_index = Math.floor(Math.random() * src.length);
    shuffle.push(src[random_index]);
    
    src = src.filter(function(el, i){
        return i != random_index;
    });
}

想到个更好的随机方法,直接随机排序,代码更简洁,运行效率高:

var src = [4,19,23,44,56,1];

var shuffle = src;
shuffle.sort(function(){
    return Math.floor(Math.random() * 3) - 1;
});

这篇关于javascript - 一个数组从另一个数组中随机取元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆