JavaScript-数组的常用方法

为啥子要总结这个数组操作方法呢,嗯~,主要是记性差,看了一遍又一遍就是记不住,可能是个鱼脑子。

操作后改变原数组的方法

  1. push():尾部添加,返回值为改变后的数组长度;
  2. pop():尾部删除,返回值为被删除元素;
  3. unshift():头部添加,返回值为改变后的数组长度;
  4. shift():头部删除,返回值为被删除元素
  5. splice():数组截取,返回值为被截取元素。
/*
* 参数一:start开始截取元素的下标
* 参数二:length,截取长度,不传则默认为start后所有的元素
* 参数三、四...:在截取位置处添加的元素
* */
var arr = [1,2,4,6,9,12,14,15,35,66,79];
var newArr = arr.splice(3,2,1);    //arr=[1, 2, 4, 1, 12, 14, 15, 35, 66, 79];newArr =[6,9]
  1. sort():排序(原理:按照unicode码进行排序),返回值为排序后的数组。
var arr = [1, 2, 3, 2];
arr.sort();   //[1, 2, 2, 3]
var arr1 = [1,2,12,33,21,1];
arr1.sort();  //[1, 1, 12, 2, 21, 33]

/*总结:只有0-9之间的数字可以正常进行排列,如果要正常排列所有数据,需要给sort传递一个函数*/

arr1.sort(function(a,b){return a-b;})   //升序方法一 [1, 1, 2, 12, 21, 33]
arr1.sort(function (a,b) {
        if(a>b){return 1;}
        if(a<b){return -1;}
        return 0;
    });                                 //升序方法一 [1, 1, 2, 12, 21, 33]
arr1.sort(function(a,b){return b-a;})   //降序 [33, 21, 12, 2, 1, 1]

/*延伸:按照对象中的某个属性排序*/
var arr2 = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}];
arr2.sort(function(a,b){
	if(a.id == b.id){return b.age - a.age; //如果id相同,按照age的降序}
	else{return a.id - b.id}
})
  1. reverse():翻转数组。

操作后不改变数组的方法

  1. slice(start,end):数组截取,返回值为被截取的元素。无参数时百世截取全部元素;有两个参数时,不包含截止位置(左闭右开);
  2. concat():合并两个或者多个数组,返回值为连接后的数组;
  3. join(str):将数组转换为字符串,返回值为使用参数连接起来的字符串;
  4. indexOf():返回第一个找到的元素下标;找不到返回-1。参数一:要查找的元素;参数二:开始下标;
  5. lastIndexOf():返回值指定字符串最后出现的位置,从指定的位置从后往前找;
/*参数一:指定元素;参数二:指定查找起始下标位置*/
var arr1 = [33, 21, 12, 2, 1, 1];
arr1.lastIndexOf(1);      //5 ,参数二不传则默认为从最后一个元素开始查找,相当于参数为arr1.length-1
arr1.indexOf(1);          //4 ,参数二不传默认为查找所有元素,相当于参数二为0
arr1.lastIndexOf(1,0)     //-1 
arr1.lastIndexOf(1,1);    //-1
arr1.lastIndexOf(1,4)     //4
arr1.lastIndexOf(1,5)     //5 
  1. arr.includes() :es6新增查找方法,判断数组中是否含有某个元素,返回布尔值。查找复杂的数组对象时,可用some()。
  2. find(): 找到并返回第一个符合条件的元素,找不到返回undefined。接受一个函数,该函数有三个参数:当前值、当前值的下标、这个数组对象。与filter的区别在于,filter以数组的形式返回所有满足条件的元素,而find只返回第一个符合条件的元素。
  3. findIndex(): 找到并返回第一个符合条件的元素下标,并停止查找;找不到返回-1。接受一个函数,该函数有三个参数:当前值、当前值的下标、这个数组对象。与lastIndexOf的区别在于,lastIndexOf常用于简单数组查找,findIndex用于数组对象。

es5中改变原数组的方法

1.forEach(): 遍历数组,无返回值,改变原数组。

/*接受一个函数,该函数有三个参数。
* 参数一:当前值;
* 参数二:当前值的下标;
* 参数三:这个数组对象
* */
var arr3 = [33, 21, 12, 2, 1, 1];
var m = arr3.forEach(function (current,index,array) {
        array[index] = current+1;
    })    //m:undefined

es5中不改变原数组的方法

以下四个方法都接收一个函数,该函数有三个参数(current,index,array)

  1. filter():过滤,以数组的形式返回符合条件的元素。
  2. every():运行给定的函数,每一项都为true时,则返回true,否则返回false,相当于&&。
  3. some(): 运行给定的函数,只要有一项为true时,就返回true,相当于||。
  4. map():遍历数组,有返回值。

es6新增

  1. isArray():判断一个元素是否为数组,返回布尔值。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值