js数组操作-打乱数组

<style>
  html, body { margin: 0; padding: 0;}
  div span { display: inline-block; width: 25px; height: 25px; background: red; }
</style>
<div id="wrap">
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
</div>

  

<script>
  function shuffle(aArr) {
    var iLength = aArr.length
      , i = iLength
      , nTemp
      , iRandom;
    while ( i-- ) {
      if (i !== (iRandom = Math.floor(Math.random()*iLength))) {
        nTemp = aArr[i];
        aArr[i] = aArr[iRandom];
        aArr[iRandom] = nTemp;
      };
    };
    return aArr;
  };
  var oSpans = document.getElementById("wrap").getElementsByTagName("span");
  var arr2 = [1, 2, 3, 4, 5, 6];
  var flag = true;
  for (var i = 0, len = oSpans.length; i < len; i++) {
    oSpans[i].index = i;
    oSpans[i].onclick = function() {
      var t = parseInt(Math.random(6)); // 目标坐标
      var target = arr2[t]; // 目标值
      arr2.splice(t, 1); // 将目标值从数组中删除
      shuffle(arr2); // 数组随机排列
      var index = this.index; // 获得点击后span的index
      arr2.splice(index, 0, target); //此时将target插入到arr2中
      for (var i = 0, len = oSpans.length; i < len; i++) {
        oSpans[i].innerHTML = arr2[i];
      };
    };
  };
</script>

  

时间: 2024-10-10 00:05:55

js数组操作-打乱数组的相关文章

Scala编程入门---数组操作之数组转换

使用yield和函数式编程转换数组 //对Array进行转换,获取的还是Aarry val a = Array(1,2,3,4,5) val a2 = for(ele <- a) yield ele * ele //对ArrayBuffer进行转换,获取的还是ArrayBuffer val b = ArrayBuffer[Int]() b+=(1,2,3,4,5) val b2=for(ele <- b) yield ele*ele //结合if守卫, 仅转换需要元素 val a3= for(

记一次数组操作:数组A根据数组B排序

前言 最近遇到一个比较坑的事,应该也算是我自己平时观察不仔细的锅:在SQL中,如果使用in的字段是有设置BTREE索引,且为数字.查询的结果会自动根据索引列升序排序. SELECT * FROM city WHERE ID IN (2,7,10,1,30,9,53) 而这并不是我想要的数据顺序,所以只能去重新调整顺序.ps:这里是通过数组手动排序,也可以在sql里通过order by feild保证顺序. 解决 首先将问题简化一下:假设我们现有一个一维数组$arr1,一个多维数组$arr2,现在

Scala 数组操作之数组转换

使用yield和函数式编程转换数组 // 对Array进行转换,获取的还是Array val a = Array(1, 2, 3, 4, 5) val a2 = for (ele <- a) yield ele * ele // 对ArrayBuffer进行转换,获取的还是ArrayBuffer val b = ArrayBuffer[Int]() b += (1, 2, 3, 4, 5) val b2 = for (ele <- b) yield ele * ele // 结合if守卫,仅转

PHP内核探索之变量(4) - 数组操作

上一节(PHP内核探索之变量(3)- hash table),我们已经知道,数组在PHP的底层实际上是HashTable(链接法解决冲突),本文将对最常用的函数系列-数组操作的相关函数做进一步的跟踪. 本文主要内容: PHP中提供的数组操作函数 数组操作函数的实现 结语参考文献 一.PHP中提供的数组操作函数 可以说,数组是PHP中使用最广泛的数据结构之一,正因如此,PHP为开发者提供了丰富的数组操作函数(参见http://cn2.php.net/manual/en/ref.array.php

PHP内核探索之变量(4)- 数组操作

上一节(PHP内核探索之变量(3)- hash table),我们已经知道,数组在PHP的底层实际上是HashTable(链接法解决冲突),本文将对最常用的函数系列-数组操作的相关函数做进一步的跟踪. 本文主要内容: PHP中提供的数组操作函数 数组操作函数的实现 结语参考文献 一.PHP中提供的数组操作函数 可以说,数组是PHP中使用最广泛的数据结构之一,正因如此,PHP为开发者提供了丰富的数组操作函数(参见http://cn2.php.net/manual/en/ref.array.php

JavaScript的数组操作

JavaScript的数组操作 JavaScript数组也是对象,它使用单一的变量存储一系列的值. 数组和对象的区别 在JavaScript中,数组必须使用数字索引,对象可以使用命名索引. 数组是特殊类型的对象,具有特有的一些属性和方法. 如何区分数组和对象 方案1 ECMAScript5定义新方法Array.isArray() var arr = []; var obj = {}; console.log(Array.isArray(arr)); // true console.log(Arr

js数组操作

js数组操作大全(转) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b:1 unshift:将参数添加到原数组开头,并返回数组的长度 var a = [1,2,3,4,5]; var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7 注:在IE6.0下测试返回值总为undefined,FF2.0下测试

js数组操作常用方法(转自:http://www.jbxue.com/article/js/20224.html)

js数组操作常用方法,包括数组的创建.数组的元素的访问.数组元素的删除.数组的拷贝等. 原文参考自:http://www.jbxue.com/article/js/20224.html 在jquery中处理JSON数组的情况中遍历用到的比较多,但是用添加移除这些好像不是太多. 今天试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中好像JSON数据是以数组的形式出现的,查阅了下相关JS中数组的操作一试果然很爽.记录下来.1.数组的创建 var arr

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScript使用push方法添加一个元素到数组末 JavaScript数组函数unshift、shift、pop、push使用

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使