首页 > 代码库 > Array类型

Array类型

Array类型

var a=new Array(20);  //创建length为20的数组

var a=[‘example‘]    //创建一个含有一项的数组

检测数组的方法

(1)instanceof

(2)Array.isArray()

转换方法

(1)toLocaleString()

(2)toString()

(3)valueOf()

(4)toLocaleString()

调用数组的toString()和valueOf()方法会返回相同的值,即由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。

toLocaleString()经常会返回与toString()和valueOf()方法相同的值,但也不总是如此。如下

var person1={
    toLocaleString:functiong{
            return ‘我爱双妙‘;
    },
    toString:{
            return‘我爱喵喵‘;
    }
};
var person2={
    toLocaleString:functiong{
            return ‘我爱肥妙‘;
    },
    toString:{
            return‘我爱肥喵‘;
    }
};
var people=[person1,person2];
alert(people);    //我爱喵喵,我爱肥喵
alert(people.toString());    //我爱喵喵,我爱肥喵
alert(people.toLocaleString());    //我爱双妙,我爱肥妙

栈方法

(1)push()

(2)pop()

var colors=new Array();

var count=colors.push(‘red‘,‘green‘);

alert(count);  //2
count=colors.push(‘black‘);

alert(count);  //3
var item=colors.pop();

alert(item);

队列方法

shift()

var colors=new Array();
var count=colors.push("red","green");
alert(count);    //2
count=colors.push("black");
alert(count);       //3
var item=colors.shift();    //取得第一项
alert(item);    //"red"
alert(colors.length);    //2

count=colors.unshift("red","green");
alert(count);  //4

重排序方法

(1)reverse()  //反转数组

(2)sort()

sort()方法会调用数组的toString()方法,然后比较得到的字符串,来确定如何排序。

var b=[1,15,3,20,8];
b.sort();
alert(b);    //1,15,20,3,8

var a=[1,15,3,20,8];
a.reverse();
alert(a); //8,20,3,15,1

sort方法可以接受一个比较函数作为参数

function campare(value1,value2){
        if(value1<value2)
                return -1;
        else if(value1>value2)
                return 1;
        else
                return0;
}
var values=[0,1,5,10,15];
values.sort(compare);
alert(values);    //0,1,5,10,15

如果对于数值类型或valueOf()方法会返回数值类型的对象类型,比较函数可以 写为

function compare(value1,value2){
            return value2-value1;
}

操作方法

(1)concat()

创建一个当前数组的副本,然后将接受到的参数添加到这个副本的末尾。

var colors=["red","green","blue"];
var colors=colors.concot("yellow",["black","brown"]);
alert(colors);        //red.green,blue
alert(color);        //red,geen,blue,black,brown

(2)slice()

能够基于当前数组的一个或者多个项创建一个新的数组。该函数能够接受两个或者一个参数,在只有一个参数的情况下,该函数返回从该参数指定位置开始到当前数组末尾的所有项;如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项。slice()方法不会影响原数组。例子:

var colors=["red","green","blue","yellow","purple"];
var colors1=colors.slice(1);
var colors2=colors.slice(1,4);

alert(colors1);        //green,blue,yellow,purple
alert(colors2);        //green,blue,yellow

(3)splice()

  • 删除:可以删除任意数量的项,只需指定2各参数:要删除的第一项的位置和要删除的项数。 
var colors=["red","green","blue"];
var removed=colors.splice(0,1);
alert(colors);        //green,blue
alert(removed);    //red
  • 插入:可以向指定位置插入任意数量的项。只需指定3个参数:起始位置,0(要删除的项数)和要插入的项。如果插入多个项,可以再传入第四,第五,以至任意多项。
removed=colors.splice(1,0,"yellow",orange");  //从位置1开始插入两个项
alert(colors);    //red,green,blue,yellow,orange
alert(removed);    //空数组
  • 替换:可以向指定的位置插入任意数量的项,且同时删除任意数量的项。只需指定三个参数:起始位置,要删除的项数,要插入的任意数量的项。
removed=colors.splice(1,1,"red","purple");
alert(colors);        //green,red,purple,orange,blue
alert(removed);    //yellow

位置方法 

(1)indexOf()

(2)lastIndexOf()

indexOf()从开头开始找,lastIndexOf()从结尾开始找。都接受两个参数:第一个查找的项和查找的起始位置的索引。

支持他们的浏览器包括IE9+,firefox2+,safari3+,opera9.5+和chrome

迭代方法

五个迭代方法,每个方法都有两个参数:要在每一项运行的函数和(可选的)运行该函数的作用域对象----影响this的值。传入这些方法中的函数会接受三个参数:数组项的值,该乡在数组中的索引,和数组对象的本身。

  • every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
  • filter():对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。
  • forEach():对数组的每一项运行给定的函数,这个方法没有返回值。
  • map():对数组的每一项运行给定的函数,返回每次函数调用的结果组成的数组。
  • some():对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
var number=[1,2,3,4,5,4,3,2,1];
var everyresult=number.every(function(item,index,array){
           return (item>2); 
});

alert(everyresult);    //false

var someresult=number.some(function(item,index,array){
           return (item>2); 
});

alert(someresult);        //true

var filterresult=number.filter(function(item,index,array){
           return (item>2); 
});

alert(filterresult);    //[3,4,5,4,3]

var mapresult=number.filter(function(item,index,array){
           return item*2; 
});

alert(mapresult);        //[2,4,6,8,10,8,6,4,2]

number.forEach(function(item,index,array){
          //执行某些操作;
});)

支持他们的浏览器包括IE9+,firefox2+,safari3+,opera9.5+和chrome

缩小方法

(1)reduce()

(2)reduceRight()

这两个方法都会迭代数组的所有项,然后构建一个最终返回值。其中,reduce()方法从数组的第一项开始,逐个遍历到最后。而reduceRight()则相反。这两个方法都接受两个参数:一个在每一项调用的函数和(可选的)作为缩小的基础的初始值。参数一是接受4个参数的函数:前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项。

使用reduce()函数可以执行数组中所有值之和的操作,如下:

var values=[1,2,3,4,5];
var sum=values.reduce(function(prev,cur,index,array){
            return prev+cur;
});
alert(sum);        //15

  

 

Array类型