ECMAScriptJavaScript中Array类型方法总结

Array类型是ECMAScript中最常用的型之一,ECMAScript中之数组与其他多数语言中之数组有着一定深的分别。ECMAScript数组的每一样桩可以保存任何项目的数据。这里总结了数组类型的大部办法,方便以后查找使用。

一律、创建数组的主导方法

  创建数量的核心措施来点儿种:

  1.动Array构造函数

var colors=new Array();
var colors=new Array(20);  //创建length值为20的数组
var colors=new Array("red","blue"); //创建包含2个字符串值得数组

  2.下频繁组字面量表示拟

var colors=[];
var colors=["red","blue"];

其次、读取和装数组值

var colors=["red","blue","green"];
alert(colors[0]);  //读取第一项
colors[2]="black";  //修改第三项
colors[3]="brown";  //增加第四项
colors.length=2;  //删除第二项后的所有值
colors[colors.length]="yellow";  //在数组末尾位置添加新项

附注:数组的length属性不是只念之。因此可由此安装这个特性,可以从数组的末梢移除了项或为数组中上加新项。

老三、检测数组

if(Array.isArray(value)){
    //用户操作
}

季、转换方法

var colors=["red","blue","green"];
alert(colors.toString());  //red,blue,green
alert(colors.valueOf());  //red,blue,green

具目标都兼备toString()和valueOf()方法。调用toString()方法会返回由数组中的每个值得字符串形式拼接而变成的一个因逗号分隔的字符串。valueOf()返回的还是多次组.数组的toString()方法好下join()方法代替。不过join()方法可以从定义分隔符

var colors=["red","blue"];
alert(colors.join(","));  //red,blue
alert(colors.join("||"));  //red||blue

五、栈方法

  栈是同一种植LIFO后进先出的数据结构,也即是时添加的项极其早被移除。使用push()和pop()方法好实现类似栈的作为。

  push()方法好吸纳任意数量之参数,把它逐个添加到数组末尾,并回修改后的数组的长短。

  pop()方法则由数最终移除最后一件,减少数组的length值,然后返回移除的起。

var colors=new Array();
var count=colors.push("red","blue");
alert(count);  //2
var item=colors.pop();  
alert(item);  //blue
alert(colors.length);  //1

六、队列方法

   队列数据结构的走访规则是FIFO先进先出结构。队列在列表的末尾添加项,从列表的前端移除项。使用push()和shift()方法可以实现类似队列的表现。

  shift()方法能够移除数组中首先独宗并赶回该项,同时将反复组的长度减1。

var colors=new Array();
var count=colors.push("red","blue");
alert(count);  //2
var item=colors.shift();
alert(item);  //red
alert(colors.length);  //1

附注:ECAMScript还提供了一个unshift()方法。它与shift用途相反:它亦可以三番五次组前补加任意个桩并回到新数组的尺寸。同时使unshift()和pop()方法,可以从反的取向来法队列,即当三番五次组的前端添加项,从数量后移除项。(不再举例).

七、重排序方法

  1.反转数组顺序reverse()

var arr=[1,2,3,4,5];
arr.reverse();
alert(arr);  //5,4,3,2,1

  2.排序方法sort()

  排序方法sort()大多数景象下还见面接一个比函数作为参数,以便我们指定哪个值位于哪个值得前面。

function compare(v1,v2){
    return v2-v1;
}
var arr=[0,1,5,10,15];
arr.sort();
alert(arr);  //0,1,10,15,5 不是我们希望的排序结果
arr.sort(compare);
alert(arr);  //0,1,5,10,15 希望的结果

八、操作方法

  1.concat()

  concat()方法可以依据当前数组中之装有项创建一个初数组,这个方法会先创造当前数据的一个副本,然后以接到的参数上加至这副本的终极。

var arr=[1,2];
var arr2=arr.concat(3,[4,5]);
alert(arr);  //1,2
alert(arr2);  //1,2,3,4,5

  2.slice()

  slice()方法能够根据当前数组中之一个要多单宗创建一个初数组。它好收一还是少于个参数,即如果返回项之起首与终止位置(不包括了位置)。一个参数时回来指定位置到即频繁组的最终所有项。

var arr=[1,2,3,4,5];
var arr2=arr.slice(1);
var arr3=arr.slice(1,4);
alert(arr2);    //2,3,4,5
alert(arr3);  //2,3,4

  附注:如果参数是负值,则据此数组长度加上该数来确定相应的职位。例如slice(-2,-1)与slice(3,4)得到的同的。如果得了位置小于起始位置,则赶回空数组。

  3.splice()

  splice()方法主要用途是向阳数组中部插入项。

splice(0,2)  //删除数组中前两项(第一个参数为要删除第一项的位置,第二个参数为要删除的项数)
splice(2,0,"red","blue")  //从当前数组的位置2开始插入"red"和"blue"(第一第二个参数同上,第三个及以后的任意个表示要插入的项)
splice(2,1,"red","blue")  //从当前数组中删除位置2的项,然后再从位置2开始插入"red"和"blue"

九、位置方法

  indexOf()和lastIndexOf().它们都收两单参数:要找的宗与代表找起点的职位的目(第二单参数可选).

var arr=[1,2,3,4,5,4,3,2,1];
alert(arr.indexOf(4));  //3
alert(arr.lastIndexOf(4));  //5
alert(arr.indexOf(4,4));  //5
alert(arr.lastIndexOf(4,4));  //3

 十、迭代法

  every():对数组中之各一样起运行为定函数,如果该函数对每一样桩都回true,则赶回true。

var numbers=[1,2,3,4,5,4,3,2,1];
var everyResult=numbers.every(function(item,index,arry){ //参数说明:数组项的值、该项在数组中的位置、数组对象本身
  return (item>2);
});
alert(everyResult);  //false

  some():对数组中的诸一样宗运行于定函数,如果该函数对任一项返回true,则归true。

var numbers=[1,2,3,4,5,4,3,2,1];
var someResult=numbers.some(function(item,index,arry){ //参数说明:数组项的值、该项在数组中的位置、数组对象本身
  return (item>2);
});
alert(someResult);  //true

  filter():对数组中的每一样宗运行为定函数,返回该函数会返回true的起构成的数组。

var numbers=[1,2,3,4,5,4,3,2,1];
var filterResult=numbers.filter(function(item,index,arry){ //参数说明:数组项的值、该项在数组中的位置、数组对象本身
  return (item>2);
});
alert(filterResult);  //[3,4,5,4,3]

  map():对数组中之每一样宗运行为定函数,返回每次函数调用的结果成的数组。

var numbers=[1,2,3,4,5,4,3,2,1];
var mapResult=numbers.map(function(item,index,arry){ //参数说明:数组项的值、该项在数组中的位置、数组对象本身
  return item*2;
});
alert(mapResult);  //[2,4,6,8,10,8,6,4,2]

  forEach():对数组中的诸一样起运行于定函数,没有返回值。

var numbers=[1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,arry){ //参数说明:数组项的值、该项在数组中的位置、数组对象本身
  //用户操作
});

十一、归并措施

  ECMAScript5初添鲜单由并道。reduce()和reduceRight()。这点儿独主意还见面迭代数组中之有着项。不同的凡reduce()方法从数组的率先桩开始,reduceRight()则于数组的最有同码开始。这有限独办法都吸纳两个参数:一个每当各国一样项上调用的函数,一个凡是当联合基础之初始值(可选)。

var values=[1,2,3,4,5];
var sum=value.reduce(function(prev,cur,inex,array){  //参数说明:前一个值、当前值、项的索引、数组对象
    return prev+cur;
});
alert(sum);  //15

var sum2=values.reduce(function(prev,cur,index,arry){
   return prev+cur;
},20);
alert(sum2);  //35

感谢阅读。