为 Javascript 数组添加 shuffle 方法

为 Javascript 数组添加 shuffle 方法

PHP 里面有个非常方便的打乱数组的函数 shuffle() ,这个功能在许多情况下都会用到,但 javascript 的数组却没有这个方法,没有不要紧,可以扩展一个,自己动手,丰衣足食嘛。

为 Javascript 数组添加 shuffle 方法 – 示例

 
<script type="text/javascript">
//<![CDATA[
// 说明:为 Javascript 数组添加 shuffle 方法
// 整理:http://www.CodeBit.cn

var shuffle = function(v){
    for(var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
    return v;
};

var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

document.write("A = ", a.join(","), "<br />shuffle(A) = ", shuffle(a));

//]]>
</script>

通过 prototype 给数组添加一个方法:

 
<script type="text/javascript">
//<![CDATA[

var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

if (!Array.prototype.shuffle) { 
	Array.prototype.shuffle = function() {
		for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
		return this;
	};
}

document.write("A = ", a.join(","), "<br />A.shuffle() = ", a.shuffle());

//]]>
</script>
<script>
 var arr = [
 {name: '陈经理', phone:'1'},
 {name: '范经理', phone:'2'},
 {name: '王经理', phone:'3'},
 {name: '于主管', phone:'4'},
 {name: '李主管', phone:'5'},
 {name: '郭主管', phone:'6'},
 {name: '韩主管', phone:'7'},
 {name: '董主管', phone:'8'},
 {name: '张主管', phone:'9'},
 {name: '杨主管', phone:''},
 {name: '吴主管', phone:''}
 ]
 Array.prototype.shuffle = function() {
 var input = this; for (var i = input.length-1; i >=0; i--)
 { var randomIndex = Math.floor(Math.random()*(i+1));
 var itemAtIndex = input[randomIndex];
 input[randomIndex] = input[i];
 input[i] = itemAtIndex; }
 return input; }
 arr.shuffle();
 var h1 = document.getElementById('h1')
 var h2 = document.getElementById('h2')
 h2.innerHTML ='HR&nbsp;'+ arr[0].name
 h1.innerHTML = arr[0].phone
 </script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值