JavaScript读书笔记(Array篇)

一、利用length属性

length返回数组长度,可以利用这一属性,为数组最后追加元素:

var color=['red','blue','green'];
color[color.length]='black';
color[color.lenght]='brown';
//输出color为['red','blue','green','black','brown'];

二、检测数组

推荐使用Array.isArray()方法,该方法在参数为数组的时候返回ture:

if(Array.isArray(value)){
    //若value为数组,则返回true
}

三、转换方法

toString()方法和valueOf()方法会返回数组的值,这个值是以逗号隔开的每个数组项组合成的字符串:

var color=['red','blue','green'];
color.toString();            //red,blue,green
color.valueOf();             //red,blue,green

join()方法会依据传入的参数,将数组的每项隔开,返回组合成的字符串:

var color=['red','blue','green'];
color.join('||');            //red||blue||green

四、操作数组

1、栈方法(后进先出)

push()方法:接收任意参数,把它们逐个添加到数组末尾,并返回数组长度。
pop()方法:从数组末尾移除最后一项,减少数组的length,然后返回被移除的项。

2、队列方法(先进先出)

shift()方法:移除数组中的第一个项,同时减少数组的length,然后返回被移除的项。
unshift()方法:从数组前端添加任意个项,数组length+1,并返回数组长度。

3、重排序方法

reverse()方法:此方法会反转数组顺序,就酱······。
sort()方法:
       此方法首先会调用每一项的toString()方法,然后比较每一项的字符串,最终以升序得到排序结果。因为是比较字符串的ASCII值,所以会出现以下现象:

var values=[0,1,5,10,15];
values.sort();
alert(values);      //0,1,10,15,5

       由于这样排序并不理想,一般会传入一个比较函数当做参数,以下为升序效果的比较函数:

function compare(value1,value2){
    if(value1<value2){
        return -1;
    }else if(value1>value2){
        return 1;
    }else{
        return 0;
    }
}

var values=[0,1,5,10,15];
values.sort(compare);
alert(values);      //0,1,5,10,15
4、操作方法

concat()方法:
       基于当前数组的所有项新创建一个数组,即先创建当前数组的一个副本,然后将接收的参数添加到副本末尾,并返回创建新数组。

var values=[0,1,5,10,15];
var new_values=values.concat('7',['25','45']);
alert(new_values);            //0,1,5,10,15,7,25,45

slice()方法:
       基于当前数组的一项或多项创建新的数组,接收两个参数:要返回项的起始位置和要返回项的结束位置(可选):

var values=[0,1,5,10,15];
var new_values1=values.slice(1);
var new_values2=values.slice(1,3);
alert(new_values1);            //1,5,10,15
alert(new_values2);            //1,5,10

       如果传入的参数为负数,则用数组length加上该数字来确定相应的位置,如果一个数组有5项,则slice(-2,-1)与slice(3,4)得到的结果是一样的。

splice()方法:
       该方法主要实现删除、插入和替换功能,主要依据传入的参数而定,其返回的是删除的数组项:
       1、splice(0,2):即起始位置为0,删除项数为2,插入项为空,所以可以实现删除数组前两项的功能;
       1、splice(2,0,’red’,’green’):即起始位置为2,删除项数为0,插入项为’red’,’green’,所以可以实现从数组第3项插入新项;
       1、splice(2,2,’red’,’green’):即起始位置为2,删除项数为2,插入项为’red’,’green’,所以可以实现将数组的第3、4项替换为新项;

5、位置方法

indexOf()方法:查找数组项的位置,接收两个参数:要查找的项和查找起点位置的索引(可选)。indexOf()方法表示从头往末尾查找,lastIndexOf()方法表示从末尾往头查找。两个方法都返回查找的结果的位置索引,在没有找到时返回-1。在查找时使用的是全等(===)。

6、迭代方法

迭代方法共有5个,每个方法都接收两个参数:要给每一项运行的函数和运行该函数的作用于对象(可选),传入的函数接收三个参数:数组项的值(item)、数组项的索引(index)、数组本身(array)。
       1、every()方法:对数组中的每一项运行给定的函数,如果每一项都返回true,则返回true。
       2、some()方法:对数组中的每一项运行给定的函数,如果任意一项返回true,则返回true。
       3、filter()方法:对数组中的每一项运行给定的函数,则返回结果为true的项组成的数组。
       4、map()方法:对数组中的每一项运行给定的函数,则返回每次函数调用结果组成的数组。
       5、forEach()方法:对数组中的每一项运行给定的函数,然而并没有返回值。

7、归并方法

reduce()方法:此方法会迭代数组所有项,然后构建一个最终返回值。接收两个参数:一个在每一项上调用的函数和作为归并寄出的初始值(可选),传入的函数接收四个参数:前一个值(prev)、当前值(cur)、项的索引(index)和数组项(array)。

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

reduceRight()方法:此方法参照reduce()方法,只是从最后一项开始迭代。

    原文作者:SSN鹦鹉螺
    原文地址: https://www.jianshu.com/p/0cd8dbc35898
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞