IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    js数组随机打乱输出

    12发表于 2016-09-09 04:32:22
    love 0
    js数组随机打乱输出,直接上代码: [runcode] [/runcode] 主要是用到js里面2个现成方法: sort() & Math.random() 实现思路解析: sort()可对数组进行排序。 它是这样工作的:每次从数组里面挑选两个数进行运算比对,如果传入的参数是0,两个数位置不变; 如果参数小于0,两个数就交换位置(升序排序); 如果参数大于0,两个数就不交换位置(降序排序)。 接下来用后面的数字跟下一个进行比较,这样循环进行排序。 Math.random()可生成0~1之间的随机数。 恰好,我们利用了这一点使用了0.5 - Math.random(), 这个运算的结果要么是大于0,要么是小于0,取0.5就各占50%的概率,这样要么交换位置,要么不交换位置,这样就达到数组随机排序的效果啦! 但上面的代码是直接操作原数组的,换句话说:如果要保留原数组,上面代码是不符合需求的! 完整需求:js数组随机打乱输出(但要保留原数组) 改进代码: [runcode] [/runcode] 改进代码,思路解析: 还是用到sort() & Math.random()2个原生js方法,只是先根据原数组长度生成一个临时索引数组,再用sort()打乱索引数组顺序,然后用索引数组元素作为临时数组tempArr的下标,用for循环遍历原数组给tempArr数组赋值。 好了,这就是满足需求的最原始的代码了,要想让代码看上去更高大上点,可以自己加个函数封装下,或直接放入Array.prototype扩展下数组原生方法都可!


沪ICP备19023445号-2号
友情链接