乱序输出字符串-完全打乱顺序

  面试题---乱序输出字符串、数组

Array.prototype.shuffle = function() {
  var array = this;
  var m = array.length,
    t, i;
  while (m) {
    i = Math.floor(Math.random() * m--);
    t = array[m];
    array[m] = array[i];
    array[i] = t;
  }
  return array;
}


var x = [1, 2, 3, 4, 5];
function shuffle(arr) {
  var length = arr.length,
    randomIndex,
    temp;
  while (length) {
    randomIndex = Math.floor(Math.random() * (length--));
    temp = arr[randomIndex];
    arr[randomIndex] = arr[length];
    arr[length] = temp
  }
  return arr;
}
console.log(shuffle(x))

自己的想法

function outOfOrder(str) {
    //str.split("");
	//var retArr=[];
	var len = str.length;
	var tmp;
	for (var i = len - 1; i > 0; i--) {
		var index = Math.floor(len * Math.random());//随机数的产生范围不变
		//每次与最后一位交换顺序
		tmp = str[index];
		str[index] = str[i];
		str[i] = tmp;
		//console.log(str[index] + str[i] + tmp)
	}
	return str;
}
var x = [1, 2, 3, 4, 5];
console.log(outOfOrder(x));


//正确
function shuffile(arr){
var len=arr.length;
var randindex,tmp;
for(var i=len;i>0;i--){
    randindex=Math.floor(Math.random()*i);//随机数的产生范围每次都变化
    tmp=arr[randindex];
    arr[randindex]=arr[i-1];
    arr[i-1]=tmp;
}
return arr;
}
var x = [1, 2, 3, 4, 5];
console.log(shuffile(x))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值