js数组乱序输出 数组乱序排列

网上看的数组乱序输出,要么不合实际,要么代码繁琐。自己试了下,希望能给大家带来帮助。

重要思想也是Math.random*arr.length随机下标,然后删除取到的元素,继续随机下标。

//将数组乱序输出
        var arr = [1,2,3,4,5,6,7,8,9,10];
        var newArr = [];
            for(var i=0; i<arr.length; i++){
                 var index = Math.floor(Math.random()*arr.length);//随机下标
                     newArr.push(arr[index]);//将随机出的元素,存放新数组newArr中去
                     arr.splice(index,1);//    将随机出的元素在arr中删除
            }
            //arr中删除随机出的元素,arr.length-1,同时i++,导致循环不会10次,会是5次.最后得到newArr中只有一半的随机数字,arr中剩下另一半. 将其合并到一起,得到res
            var res =[...newArr,...arr];
            console.log(res)

结果如下:

随后也有个问题,这个其实只随机了一半的数字,后一半没有随机,只是合并了上去。

改进后:

var arr = [1,2,3,4,5,6,7,8,9,10];
        var newArr = [];
        var len = arr.length;
            for(var i=0; i<len; i++){
                 var index = Math.floor(Math.random()*arr.length);//随机下标
                     newArr.push(arr[index]);//将随机出的元素,存放新数组newArr中去
                     arr.splice(index,1);//    将随机出的元素在arr中删除
            }
            //arr中删除随机出的元素,arr.length-1,同时i++,导致循环不会10次,会是5次.最后得到newArr中只有一半的随机数字,arr中剩下另一半. 将其合并到一起,得到res
            var res =[...newArr,...arr];
            console.log(res) 

把len当成,作为循环条件,最后所有的都是随机的,结果如下:

原文地址:https://www.cnblogs.com/Mir-bink/p/10604747.html

时间: 2024-10-24 09:12:17

js数组乱序输出 数组乱序排列的相关文章

编程题:将数字0~5放入一个整型数组,并逆序输出数组

#include<stdio.h> void main() { int i,a[5]; for(i=0;i<5;i++)         /*给数组中元素赋值*/ a[i]=i; for(i=4;i>=0;i--)          /*逆序输出数组中元素值*/ printf("%3d",a[i]); printf("\n"); } 编程题:将数字0~5放入一个整型数组,并逆序输出数组,布布扣,bubuko.com

第十六周OJ项目一——逆序输出数组

/* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2014年 12 月 11 日 * 版 本 号:v1.0 * * 问题描述: 逆序输出数组 * 输入描述: 输入几个整型数 * 程序输出: 逆序输出数组 */ #include <iostream> using namespace std; const int N=100; int main() { int a[N],*

Java例题_31 逆序输出数组的值

1 /*31 [程序 31 数组逆序] 2 题目:将一个数组逆序输出. 3 程序分析:用第一个与最后一个交换. 4 */ 5 6 /*分析 7 * 第一种方法:找到这个数组的中间下标,然后交换两端的数字,再顺序输出数组=====我觉得麻烦了 8 * 第二种方法:利用a.lengh找到数组的最后一个值,直接用递减的for循环,逆序输出 9 * */ 10 11 package homework; 12 13 public class _31 { 14 15 public static void m

第16周上机实践项目1--逆序输出数组

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:刘畅 * 完成日期:2014 年 12 月 14 日 * 版 本 号:v1.0 * * 问题描述:采用指针访问的方式,从键盘给数组a[N]输入n个数据(n小于100),然后对元素值按逆序存放后输出.: * 输入描述:共n+1个整数,先输入n值,再输入n个整数: * 程序输出:与输入顺序正好相反的n个整数. #include <iostre

倒序以及降序输出数组当中的成员信息

NSArray*[email protected][@12,@9,@34,@56,@11]; NSLog(@"第二题没倒序之前输出——————————————————————————————————————————————————"); for (id str6 in arr6) { NSLog(@"%@",str6); } NSArray*newarr6=[NSArray arrayWithArray:arr6]; for (int i=0; i<arr6.

java版的单向链表的逆序输出

将单向链表逆序输出,方法有三种: a.遍历链表,将每个节点的内容存入一个数组中,然后逆序输出数组(最简单的做法) b.使用栈来逆序输出 c.直接将链表逆序然后输出(本文采用的方法) 先介绍算法: 1). 若链表为空或只有一个元素,则直接返回: 2). 设置两个前后相邻的指针p,q. 将p所指向的节点作为q指向节点的后继: 3). 重复2),直到q为空 4). 调整链表头和链表尾 示例:以逆序A->B->C->D为例,图示如下 package com.moluo.shujujiegou;

2015-4-2的阿里巴巴笔试题:乱序的序列保序输出(bit数组实现hash)

分布式系统中的RPC请求经常出现乱序的情况.写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:123, 4, 567, 8, 9, 10 上述例子中,3到来的时候会发现4,5已经在了.因此将已经满足顺序的整个序列(3, 4, 5)输出为一行. 1 #include<stdio.h> 2 3 int main() 4 { 5 int num ; 6 while(scanf("%d"

写一个函数实现数组中的元素随机乱序排序

//原生JS写一个函数实现一个shuffle方法,将数组中的元素随机乱序排序 var shuffle = function(arr){ var len,t,rand; for(var i =0;len = arr.length,i<len;i++){ rand = parseInt(Math.random()*len);//parseInt(Math.random()*(len-1-0)+1);或者rand = Math.floor(Math.random()*(len-1-0)+1);即Mat

乱序序列保序输出

题目: http://blog.csdn.net/michael_kong_nju/article/details/44851495 这是一家互联网公司的笔试题,好像没有说保密协议,应该是可以公开的,我也来贡献一下自己的思路和代码. 分布式系统中的RPC请求经常出现乱序的情况. 写一个算法来将一个乱序的序列保序输出.例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是: 1 2 3, 4, 5 6 7, 8, 9, 10 上述例子中,3到来的