js 中的数组Array

1、

ECMAScript 中的数组与其他语言中的数组有些不同,ECMAScript中的数组可以每一项都不同类型,数组的大小可以动态调整。

var colors = new Array();

var colors = new Array(20);

var colors = new Array("red","blue","green");

var colors = [];

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

2、动态修改 length 属性:新设置的 length 小于原来的 length,则删除多余的项;新length大于原来的length,会新增项,且新增项的值是undefined。

3、可以手动在数组末尾新增项:colors[colors.length] = "brown";

4、检测变量是不是数组:1)value instanceof Array ,返回true、false。如果多个框架,一个框架向另一个框架传入一个数组,那么该数组的构造函数与第二个框架中的Array构造函数是不同的,instanceof 操作会返回false。

                                          2)方法,Array.isArray(value),不管数组在哪个全局环境中创建,IE9+

5、Array作为一种对象,也具有 toLocaleString()、toSring()、valueOf()方法,也有其他自身的一些方法。

        1)valueOf():返回数组本身;

        2)toString():调用数组中每一项的 toString() 方法,并以逗号分隔拼接成一个字符串;

        3)toLocaleString():调用每一项的 toLocaleString() 方法,并以逗号分隔拼接成一个字符串;

        4)join():可以使用特定的分隔符来将数组拼接成一个字符串,不带参数,默认以逗号分隔,colors.join("--");

5)push():可以接受任意数量的参数,将他们逐个添加到数组末尾,并返回修改后数组的长度;

6)pop():从数组末尾移除最后一项,数组length减1,返回移除的项;

7)shift():移除数组的第一项并返回该项,数组length减1;

8)unshift():可以接受任意数量的参数,将他们逐个添加到数组的前端,返回新数组的长度;

9)reverse():反转数组的顺序,改变原数组;

10)sort():默认sort() 方法会先调用每一项的toString(),然后比较得到的各项字符串,并以字符串升序排列原数组,改变原数组。

        sort()方法还可以传入一个比较函数作为参数,在比较函数中定义排序规则: 

function compare(value1,value2){  //value1是位于后面的项,value2是前面的项
// console.log(value1,value2);
if(value1 < value2){
return -1;//升序排列,返回负数
// return 1;//降序排列,返回整数
}else if(value1>value2){
return 1;
// return -1;
}else{
return 0;
}
}

11)concat():可以基于当前数组及该方法的参数一起组成一个新数组,并返回。concat()方法的参数可以是任意个,可以是数组或其他类型的数据,最终都会按参数的顺序添加在原数组副本的后面,不改变原数组;

12)slice():可以基于当前数组的一项或多项创建一个新数组,接受一个或两个参数,返回项的起始位置和结束位置,类似 String 的 slice() 方法,位置索引可以为负数,计算时会加上数组长度,结束位置小于起始位置,则返回空数组。并不会改变原数组;

13)splice():可以用来删除数组中的项,可以插入项,可以替换项,改变原数组

       a)删除:指定两个参数,要删除的第一项的位置及要删除的项数

       b)插入:指定三个参数,起始位置,0(要删除的项数),要插入的项(可以是多项,就要给出更多的参数),colors.splice(1,0,"black","yellow")--》在索引为1的项后面添加

       c:替换:删除一些项,并插入一些项,三个参数,起始位置,n(要删除的项数),要插入的项(可以是多项,就要给出更多的参数),colors.splice(1,1,"black","yellow")--》删了索引为2的项,并在索引为2的地方开始新增两项

14)indexOf(item[, startIndex]):返回要查找的项在数组中的索引值,参数是 要查找的项和可选的查找的起点位置,从数组的起始位置开始往后查找,用全等(===)比较值是否相等,未找到返回-1

15)lastIndexOf(item[, startIndex]):返回要查找的项在数组中的索引值,参数是 要查找的项和可选的查找的起点位置,从数组的末尾往前开始查找,用全等(===)比较值是否相等,未找到返回-1

16)every( callback(item, index, arrSelf){...} [, domain] ):对数组中的每一项运行给定函数,如果该函数对每一项都返回true ,则返回true,不会改变原数组;

17)filter( callback(item, index, arrSelf){...} [, domain] ):对数组中的每一项运行给定的函数,并将能够返回true的项组成的新数组返回,不会改变原数组;

18)forEach( callback(item, index, arrSelf){...} [, domain] ):对数组中的每一项运行给定的函数,没有返回值,不会改变原数组;

19)map( callback(item, index, arrSelf){...} [, domain] ):对数组中的每一项运行给定的函数,返回每一项执行函数的返回值组成的数组,不会改变原数组;

20)some( callback(item, index, arrSelf){...} [, domain] ):对数组中的每一项运行给定的函数,如果该函数对其中任意一项返回true,则返回true,不会改变原数组;

21)reduce(callback(prev, current, index, arrSelf) [, startValue]):参数解释 ---》(回调函数(前一个值,当前值,索引,数组本身) [, 归并初始值])。从数组开始往后归并

22)reduceRight(callback(prev, current, index, arrSelf) [, startValue]):从数组末尾往前归并。若有startValue,则第一次执行时prev == startValue,current == arrSelf[0],index==0;若没有startValue,则第一次执行时prev == arrSelf[0],current == arrSelf[1] ,index==1;

下一次执行时将上次函数返回的值作为prev,current,index后移一位;

猜你喜欢

转载自www.cnblogs.com/zhanglw456/p/10882877.html