JS数组常用方法

(1、作用 2、参数 3、返回值 4、是否改变原有数组)

栈方法:

push()
  1. 向数组末尾逐个添加参数中的项
  2. 需要添加到数组末尾的项
  3. 返回数组的新长度
  4. 原数组改变
var arr = [1,2,3,4,5,6];
var res = arr.push(7,8,9);
console.log(res); //9
console.log(arr); //[1,2,3,4,5,6,7,8,9]
pop()
  1. 移除数组最后一项
  2. 不需要参数
  3. 返回移除的项
  4. 原数组改变
var arr = [1,2,3,4,5];
var res = arr.pop();
console.log(res); //5
console.log(arr); //[1,2,3,4]

队列方法:

shift()
  1. 移除数组第一项
  2. 不需要参数
  3. 返回移除的项
  4. 原数组改变
var arr = [1,2,3,4,5];
var res = arr.shift();
console.log(res); //1
console.log(arr); //[2,3,4,5]
unshift()
  1. 向数组前端逐个添加参数中的项
  2. 需要添加到数组前端的项
  3. 返回数组的新长度(IE7及更早版本返回undefined)
  4. 原数组改变
var arr = [1,2,3];
var res = arr.unshift(4,5,6);
console.log(res); //6
console.log(arr); [4,5,6,1,2,3]

重排序方法:

reverse()
  1. 反转数组项的顺序
  2. 不需要参数
  3. 返回倒序后的原数组
  4. 原数组改变
var arr = [1,2,3,4,5,6];
var res = arr.reverse();
console.log(res); //[6,5,4,3,2,1]
console.log(arr); //[6,5,4,3,2,1]
sort()
  1. 默认按升序排列数组项
  2. 参数是一个比较函数,如果不写参数只能排序10以内
    sort(function(a,b){return a-b}) 升序
    sort(function(a,b){return b-a}) 降序
  3. 返回排好序的数组
  4. 原数组改变
var arr = [1,4,2,6,8,7,3,5];
var res = arr.sort(function(a,b){
    return a-b;
});
console.log(res); //[1,2,3,4,5,6,7,8]
console.log(arr); //[1,2,3,4,5,6,7,8]

操作方法:

concat()
  1. 将参数添加到原有数组的副本末尾,如果没有参数则克隆原数组
  2. 参数如果是一个或多个数组则将参数数组中的每一项都添加到原有数组副本中,参数如果不是数组,则直接将参数添加到原有数组副本中
  3. 返回拼接好的数组
  4. 原数组不变
var arr = [1,2,3,4];
var res = arr.concat([5,6,7,8]);
console.log(res); //[1,2,3,4,5,6,7,8]
console.log(arr); //[1,2,3,4]
join()
  1. 将数组的每一项按指定分隔符拼接成字符串
  2. 参数是指定的分隔符,如没有参数默认为“,”
  3. 返回值是拼接好的字符串
  4. 原数组不变
var arr = [1,2,3,4,5,6];
var res = arr.join('|');
console.log(res); //1|2|3|4|5|6
console.log(arr); //[1,2,3,4,5,6]
slice()
  1. 基于原数组中的一个或多个项创建一个新数组(复制数组)
  2. 参数如果只有一个则从参数指定位置开始复制到数组末尾,参数如果有两项则从第一个参数位置开始复制到第二个参数位置(不包含第二个参数位置的项),如不写参数则默认从索引为0的项开始复制到数组末尾,如果参数含有负数则用原数组长度加上该负数来确定相应的位置
  3. 返回值是复制后的新数组(如果结束位置小于起始位置则返回空数组)
  4. 原数组不变
var arr = [1,2,3,4,5,6];
var res = arr.slice(1,4);
console.log(res); //[2,3,4]
console.log(arr); //[1,2,3,4,5,6]
splice()
    • 删除任意数量的项
    • 向指定位置插入任意数量的项
    • 替换原数组中任意数量的项
    • splice(n) 从索引n一直删除到末尾
    • splice(n,m) 从索引n开始删除m个数组项
    • splice(n,m,x)从索引n开始删除m个数组项,然后再从位置n开始插入x(x可以是多个项,不必与删除的项数相等)
  1. 返回含有删除项的数组,如果一个都不删除则返回空数组
  2. 原数组改变
var arr = [1,2,3,4,5,6];
var res = arr.splice(1,4,7,8,9);
console.log(res); //[2,3,4,5]
console.log(arr); //[1,7,8,9,6]

//模拟push   
arr.splice(arr.length,0,x);
//模拟pop    
arr.splice(arr.length-1,1);
//模拟unshift   
arr.splice(0,0,x);
//模拟shift     
arr.splice(0,1);

位置方法(IE9+):

indexOf()
  1. 从数组开头开始向后查找某一项在数组中的位置
  2. 参数是要查找的项和表示查找起点位置的索引(可选)
  3. 返回要查找的项在数组中的位置,如果没找到则返回-1(在比较第一个参数与数组中的每一项时会使用全等操作符,要求查找的项必须严格相等)
  4. 原数组不变
var arr = [1,2,3,4,5,6,7];
var res = arr.indexOf(5);
console.log(res); //4
console.log(arr); //[1,2,3,4,5,6,7]
lastIndexOf()
  • 同indexOf(),lastIndexOf()是从数组末尾开始向前查找

迭代方法(IE9+):

every()
  • 对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,原数组不变
var arr = [1,2,3,4,5,6];
var res = arr.every(function(item,index,array){
    return item > 2;
});
console.log(res); //false
filter()
  • 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组,原数组不变
var arr = [1,2,3,4,5,6,7,8];
var res = arr.filter(function(item,index,array){
    return item > 4;
});
console.log(res); //[5,6,7,8]
forEach()
  • 对数组中的每一项运行给定函数,没有返回值,原数组不变
var arr = [1,2,3,4,5];
var res = arr.forEach(function(item,index,array){
    //do something
});
console.log(res);  //undefined
map()
  • 对数组中的每一项运行给定函数,返回每次函数调用结果组成的数组,原数组不变
var arr = [1,2,3,4,5];
var res = arr.map(function(item,index,array){
    return item+1;
});
console.log(res); //[2, 3, 4, 5, 6]
some()
  • 对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true,原数组不变
var arr = [1,2,3,4,5,6];
var res = arr.some(function(item,index,array){
    return item > 3;
});
console.log(res); //true

归并方法(IE9+)

reduce()
  1. 从数组第一项开始逐个遍历到最后
  2. 接收两个参数,在每一项上调用的函数和作为归并基础的初始值(可选);参数中的函数接收4个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。
  3. 返回值是参数函数运行的最终结果
  4. 原数组不变
//数组求和
var arr = [1,2,3,4,5];
var sum = arr.reduce(function(prev,cur,index,array){
    return prev + cur;
});
console.log(sum); //15
reduceRight()
  • 同reduce(),只不过reduceRight()是从数组的最后一项开始向前遍历到第一项
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值