数组操作

一、数组的创建

构造函数

1、var a=new Array();

无参构造函数,创建一个空数组。

 

2、var a=new Array(5);

一个数字参数构造函数,指定数组的长度(由于数组长度可以动态调整,作用不大),创建指定长度的数组。

 

3、var a=new Array(5,"hello");  

带有初始化数据的构造函数,创建数组并初始化参数数据。

 

字面量

1、var a=[];

使用方括号,创建空数组。

 

2、var a=[1,2,"hello"];

使用方括号,并传入初始化数据。

 

注意点:

在使用构造函数创建数组时如果传入一个数字参数,则会创建一个长度为参数的数组,如果传入多个,则会创建一个数组,参数作为初始化数据加到数组中。

var a=new Array(5);
console.log(a.length);   //5    数组是空的
var b=new Array(5,6);
console.log(b.length);   //2

 

使用字面量,则无论传入几个参数,都会把他当做初始化内容。

var a=[5];
console.log(a.length);  //1

 

二、操作

 

1、length 

计算数组的长度

var a=["aaa","bbb"];
alert(a.length)    //2

 

2、索引

通过索引获取相应值,同时也可以改变索引对应的值。

var a=["aaa","bbb","ccc"];
alert(a[1]);   //bbb
a[1]="ddd";
alert(a[1]); //ddd

 

3、indexOf 

返回指定元素的位置,若不存在则返回-1

var a=["aaa","bbb","ccc"];
alert(a.indexOf("ccc"));   //2
alert(a.indexOf("ddd"));   //-1

 

4、slice

接收一个或两个参数,参数对应的是要返回项的起始位置和结束位置,若只有一个参数,该方法返回数组的指定位置到末尾期间的所有项,如果有两个参数,返回从起始位置到结束位置期间的所有项,但是不包括结束位置那一个项,返回的是一个新的数组,不影响原数组。

var a=["aaa","bbb","ccc"];
var b=a.slice(1);   
console.log(b);   ["bbb","ccc"];
var c=a.slice(0,2);   
console.log(c);   ["aaa","bbb"];

 

5、push

向数组末尾添加若干项,返回的是添加完成后数组的长度(length);

var a=["aaa"];
var b=a.push("bbb","ccc");
console.log(a);  //["aaa","bbb","ccc"];
console.log(b);  //3

 

6、unshift

向数组头部添加若干项,返回的是添加完成后数组的长度。

var a=["aaa","bbb"];
var b=a.unshift("ccc");
console.log(a); //["ccc","aaa","bbb"]
console.log(b);   //3

 

7、pop

删除数组最后一个元素,返回被删除的元素。

var a=["aaa","bbb","ccc"];
console.log(a.pop()); // ccc
console.log(a);    //["aaa","bbb"]

 

8、shift

删除数组第一个元素,返回的是被删除的元素。

var a=["aaa","bbb","ccc"];
var b=a.shift();
console.log(a);   //["bbb","ccc"]
console.log(b);  // aaa

 

9、sort

对数组进行排序,返回排序后的数组,默认把所有元素转化为字符之后再进行排序,排序以后会改变原数组。

可以定义一个比较函数,来进行数字的排序。

function bijiao(a,b){
    return a-b;
}
var arr=[3,5,1,10,8];
console.log(arr.sort(bijiao));       //[1, 3, 5, 8, 10]

 

10、reverse

对数组进行反转。

var a=["aaa","bbb","ccc"];
a.reverse();
console.log(a);  //["ccc", "bbb", "aaa"]

 

11、splice

从指定位置删除若干个元素,再从该位置添加若干元素,结果返回被删除的元素,第一个参数表示起始删除的位置,第二个参数表示要删除的个数,之后的元素表示要添加的元素。

这里参数有三种情况。

var a=["aaa","bbb","ccc"];
console.log(a.splice(1));    //   ["aaa"]  只有一个参数,从该位置删除到结束

var a=["aaa","bbb","ccc"];
console.log(a.splice(0,1));  //["bbb","ccc"] 有两个参数,从该位置删除到指定位置

var a=["aaa","bbb","ccc"]; 
console.log(a.splice(0,2,"ddd"));  //["ddd","ccc"] 有多个参数,第一为删除开始位置,第二为结束位置,后面就是要添加的新元素。

 

12、concat

把当前的数组和另外一个数组链接起来,并返回新的数组,并不影响原来的两个数组。

var a=["aaa"];
var b=["bbb"];
var c=a.concat(b);
console.log(a);   //["aaa"]
console.log(b);   //["bbb"]
console.log(c);   //["aaa","bbb"]

 

13、join

将数组中的元素用指定的字符连接起来,返回字符串。

var a=["aaa","bbb","ccc"];
var b=a.join("--");
console.log(a);  //["aaa","bbb","ccc"]
console.log(b);  // aaa--bbb--ccc

 

14、map

对数组中的每一项运行函数,返回函数运行结果组成的数组,函数的参数是一个函数,而该函数接收三个参数:数组当前值,数组索引、数组

var arr = [1,2,3,-1];
alert(arr.map(function(x) {
      return x * x;
}
));//返回1,4,9,1

 

15、reduce

从数组的第一项开始,逐个遍历到最后,函数接受两个参数,一个是在数组上调用的函数和归并的初始值(可选),而调用数组的函数接受四个参数:前一个值、当前值、当前值索引、当前数组,第一次调用时,前一个值是数组第一项,当前值是数组第二项

var arr = [1,2,3,-1];
var result = arr.reduce(function(prev,cur,index,array){
     return prev+cur
})
alert(result);//5

 

16、filter

对数组中的每一项进行函数,返回该函数返回true的元素组成的新数组

var a=[1,0,-8,9,5,-2];
var b=a.filter(function(x){
    if(x<0){
        return true;
    }else{
        return false;
    }
})
console.log(b);  //[-8,-2]

 

posted @ 2017-01-13 14:47  asimpleday  阅读(221)  评论(0编辑  收藏  举报