给数组随机排序
2016-03-23 08:53
274 查看
随机排序
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; } var tempArray = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] tempArray.shuffle(); // and the result is... alert(tempArray);
添加数组项
给数组末尾添加一个或多个数组项:var arr = []; arr.push('a','b'); console.log(arr); // ['a','b']在数组的前面添加一个或多个数组项:
var arr = ['a','b']; arr.unshift(1,2); console.log(arr); // [1, 2, "a", "b"]使用splice()方法给数组添加数组项:
var arr = ['a','b','c',1,2]; arr.splice(2,0,'d','c','e');//在索引为2处,0表示不删除,插入d、c、e console.log(arr); // ["a", "b", "d", "c", "e", "c", 1, 2]使用concat()方法可以给数组添加数组项,只不过使用这种方法不会改变原数组:
var arr = ['a','b','c']; var arr2 = arr.concat('d',1,2,['e',3]); console.log(arr); // ["a", "b", "c"] console.log(arr2); // ["a", "b", "c", "d", 1, 2, "e", 3]
删除数组项
从数组的末尾删除一个数组项:var arr = ['a','b','c','d',1,2]; arr.pop(); console.log(arr); // ["a", "b", "c", "d", 1]删除数组的第一项:
var arr = ['a','b','c','d',1,2]; arr.shift(); console.log(arr); // ["b", "c", "d", 1, 2]给一个数组中删除多个数组项,只不过不同的是,slice()不会影响原数组,只是会在原数组基础上创建一个数组副本:
var arr = [1,2,3,4,'a','b'];var arr2 = arr.slice(2); console.log(arr); // [1, 2, 3, 4, "a", "b"] console.log(arr2); // [3, 4, "a", "b"]console.log(arr3); // ["a", "b"]splice()方法除了能给数组添加数组项之外,还可以给数组删除数组项,会改变原数组:
var arr = [1,2,3,4,'a','b','c']; var arr2 = arr.splice(2,2); //索引为2处,开始删除2项 console.log(arr); // [1, 2, "a", "b", "c"] console.log(arr2); // [3, 4]数组的查询提取:
var arr = [1,2,3,4,5,6]; var arr2 = arr.slice(-3); console.log(arr); // [1, 2, 3, 4, 5, 6] console.log(arr2); // [4, 5, 6]
复制数组
错误实现:var array1 = new Array("1","2","3"); var array2; array2 = array1; array1.length = 0; alert(array2); //返回为空这种做法是错的,因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类型。array2得到的是引用,所以对array1的修改会影响到array2。
使用slice()
可使用slice()进行复制,因为slice()返回也是数组。
var array1 = new Array("1","2","3"); var array2; array2 = array1.slice(0); array1.length = 0; alert(array2); //返回1、2、3
使用concat()
注意concat()返回的并不是调用函数的Array,而是一个新的Array,所以可以利用这一点进行复制。
var array1 = new Array("1","2","3"); var array2; array2 = array1.concat(); array1.length = 0; alert(array2); //返回1、2、3
总结
这里简单的整理了一个数组的增、删、改、查的相关方法。简单的总结一下:增加数组项方法:除了直接改变数组项的值和修改数组的length给数组添加数组项方法之外,还可以使用push()、unshift()、concat()和splice()添加数组项
删除数组项方法:删除数组项方法有pop()、shift()、slice()和splice()方法
改变数组项方法:在数组中主要通过splice()方法来改变数组项
查询数组项方法: 查询数组项方法其实就是对数组做查询提取功能,主要使用的方法是slice()方法
复制数组注意,Array是引用类型
相关文章推荐
- Win10中VC2013安装Unit test组件出现问题解决方案
- 是什么让深度学习再次崛起并超越人类?
- lintcode-medium-Interleaving String
- javaEE MyEclipse下SSH框架搭建+测试
- Spring Mvc——Controller中常规方法示例
- UITabBarController简单介绍
- Spring Mvc——Controller中常规方法示例
- Oracle trunc()函数的用法
- 第3课 浮点数的秘密
- 举例讲解Java编程中this关键字与super关键字的用法
- ScrollView嵌套Scrollview中滑动时间冲突的解决方案
- 网络测试工具集 - netwox (可实现网络欺骗)
- 一名3年工作经验的程序员面试分享应该具备的技能
- 作业三(代码规范、代码复审、PSP)
- c#取得控制台应用程序根目录
- PDE11 wave equation: d'Alembert examples
- CentOS 7 安装 MySQL
- Struts2 S2-029远程代码执行漏洞
- POJ 3362 Protecting the Flowers
- Shell编程(二)---替换、运算符、注释