js数组方法
来源:互联网 发布:秒杀java实现代码 编辑:程序博客网 时间:2024/06/16 18:38
除了object外,Array类型大概是ECMAScript中最常用的类型了。ECMAScript数组的每一项可以保存任何类型的数据。而且ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新数据。创建数组的基本方式有两种
//第一种是使用array构造函数var colors=new Array();var colors=new Array(20)//创建length为20的数组var colors=new Array('red','blue','green');//创建了包含三个字符串值的函数var colors=Array(3)//也可以省略new操作符//第二种是使用数组字面量表示法var colors=['red','blue','green'];//创建一个包含三个字符串的数组var colors=[];//创建一个空数组js数组有很多方法
1.转换方法:
toLocaleString(),toString(),valueOf(),join()
var colors=['red','blue','green'];alert(colors.toString());//red,blue,green。返回字符串,实际上数组的toString()方法会调用数组每一项的toString()方法console.log(colors.valueOf());//['red','blue','green']。返回的还是数//toLocaleString()方法经常会返回与toString(),valueOf()相同的值。但也不总是如此。当调用数组的toLocaleString()方法时,它也会创建一个数组值的逗号分隔的字符串。但是为了取得每一项的值,调用的是每一项的toLocaleString()var person1={toLocaleString:function(){return 'Nikolaos';},toString:function(){return 'Nicholas';}};var person2={toLocaleString:function(){return 'Grigorios';},toString:function(){return 'Greg';}};var people=[person1,person2];alert(people);//Nicholas,Gregalert(people.toString());//Nicholas,Gregalert(people.toLocaleString());//Nikolaos,Grigorios//join()方法只接受一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串alert(colors.join('||'));//red||blue||green如果数组中的某一项的值是null或undefined,那么该值在join(),toLocaleString(),toString(),valueOf()方法返回的结果中以空字符串表示
2.栈方法:
栈是一种后进先出的数据结构,也就是最新添加的项最早被移除。而栈中项的插入和移除只发生在一个位置——栈的顶部。
push():可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
pop():从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
push()和pop()都是会影响原数组的方法
var colors=new Array();var count=colors.push('red','blue');alert(count);//2count=colors.push('black');alert(count);//3var item=colors.pop();alert(item);//'black'alert(colors.length);//2
3.队列方法:
队列是一种先进先出的数据结构,即在队列末端添加项,在前端移除项
shift():能够移除数组中的第一个项,并返回该项,同时将数组长度减一。结合使用shift()和push()方法,可以像使用队列一样使用数组
var colors=new Array();//创建一个数组var count=colors.push('red','blue');//推入两项alert(count);//2count=colors.push('black');//推入另一项alert(count);//3var item=colors.shift();//取得第一项alert(item);//'red'alert(count);//2unshift():与shift()的用途相反,它能在数组前端添加任意个项并返回新数组的长度。结合使用unshift()和pop()方法,可以从相反的方向来模拟队列,即从数组前端添加项,末端移除项
var colors=new Array();var count=colors.unshift('red','blue');//整体推入两项,是['red','blue'],而不是['blue','red']alert(count);//2count=colors.unshift('black');alert(count);//3var item=colors.pop();alert(item);//'blue'alert(colors.length);//2
4.重排序方法:
reverse():会反转数组项的顺序
var values=[1,2,3,4,5];values.reverse();alert(values);//5,4,3,2,1sort():默认地,按升序排列数组项,sort()方法会调用每个数组项的toString()方法,然后比较得到的字符串,即,sort()方法比较的始终是字符串。
//因为在进行字符串比较时,10位于5的前面var values=[0,1,5,10,15];values.sort();alert(values);//0,1,10,15,5sort()方法可以接受一个比较函数作为参数。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,反之,则返回一个正数。
function compare(value1,value2){return value1-value2}var values=[0,1,10,15,5];values.sort(compare);alert(values);//0,1,5,10,15
5.操作方法:
concat():先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给concat()方法传递参数的情况下,它只是复制当前数组并返回副本(不会影响原数组)
var colors=['red','green','blue'];var colors2=colors.concat('yellow',['black','brown']);alert(colors);//red,green,bluealert(colors2);//red,green,blue,yellow,black,brownslice():基于当前数组中的一个或多个项创建一个新数组。此方法可接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项(如果slice()中的参数中有负数,则用数组长度加上该数来确定相应的位置)(不会影响原数组)
var color=['red','green','blue','yellow','purple'];var colors2=colors.slice(1);var colors3=colors.slice(1,4);alert(colors2);//green,blue,yellow,purplealert(colors3);//green,blue,yellowsplice():删除,插入,替换。(会影响原数组,但返回删除项)
var colors=['red','green','blue'];//删除:指定两个参数,要删除的第一项的位置和要删除的项数var removed=colors.splice(0,1);alert(colosr);//green,bluealert(removed);//red//插入:提供三个参数,起始位置,0(要删除的项数),要插入的项,如果要插入多个项,可以继续添加参数removed=colors.splice(1,0,'yellow','orange');alert(colors);//green,yellow,orange,bluealert(removed);//空数组//替换:指定三个参数,起始位置,删除的项数,要插入的任意数量的项removed=colors.splice(1,1,'red','purple');alert(colors);//green,red,purple,yellow,orange,bluealert(removed);//yellow
6.位置方法:
indexOf()和lastIndesOf()这两个方法都接收两个参数,要查找的项和(可选的)表示查找起点位置的索引,indexOf()从数组开头开始查找,lastIndexOf()从数组末尾开始查找。这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回-1(在比较第一个参数与数组中的每一项时,会使用全等操作符;也就是说,要求查找的项必须严格相等)
7.迭代方法:
有五个迭代方法,每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值。传入这些方法中的函数会接收三个参数,数组项的值,该项在数组中的位置和数组对象本身(这五个方法都不会修改数组中的包含的值)
everty():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true
filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
forEach():对数组中的每一项运行给定函数,这个方法没有返回值
map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true
var arr=['blue','red','yellow','black'];var color1='brown';var obj={color1:'blue'}arr.forEach(function(item,index,array){if(item==this.color1){return alert('true '+index+' '+array);}},obj);//true 0 blue,red,yellow,black
8.归并方法:
reduce()和reduceRight():这两个方法都会迭代数组的所有项,然后构建一个最终返回值
阅读全文
0 0
- JS数组方法汇总
- JS数组方法汇总
- JS数组方法汇总
- JS数组方法汇总
- JS数组方法汇总
- JS数组方法整理
- JS数组方法汇总
- JS数组方法介绍
- js数组去重三种方法
- JS数组方法汇总
- js操作数组方法
- js数组方法扩展
- js数组方法
- js常用数组方法
- js数组常用方法
- js数组常用方法
- js数组的方法
- JS数组的方法
- 微信小程序后台解密用户数据
- 面试题目21—包含min函数的栈
- KSGT
- Spring4笔记--IOC
- 跳转Activity时,加入动画效果
- js数组方法
- 未来的世界一定是尔虞我诈的世界吗
- CircleImageView 解析与定制
- 面试题22—栈的压入、弹出序列
- jQuery加载html文档的几种方法
- 报文格式
- ERROR: SWT folder '' does not exist
- Node安装和使用
- syscon 的使用