数组的增删改排列排序push,unshift,pop,shift
2020-06-07 本文已影响0人
小柠有点萌
数组的常用方法路线:
方法的作用和含义
方法的实参(类型和含义)
方法的返回值
原来数组是否会发生改变
1.数组的增删改
这一部分都会修改原有的数组
push
push: 向数组末尾增加内容
@params
多个任意类型
@return
新增后数组的长度
let ary = [10, 20];
let res=ary.push("aa", 44);
console.log(res,ary)
结果:
4 (4) [10, 20, "aa", 44]
扩展 :基于原生js操作键值对添加内容
let ary = [10, 20];
ary[ary.length] = 40;
console.log(res, ary)
结果:
[10, 20, 40]
unshift
unshift: 向数组开头增加一项
@params
多个任意类型
@return
新增后数组的长度
let ary = [10, 20];
let res=ary.unshift("aa", 44);
console.log(res,ary)
结果:
4 (4) [ "aa", 44,10, 20]
扩展 :基于原生es6展开运算符,把原来的ary克隆了一份,在新数组中创建第一项
let ary = [10, 20];
ary=[100, ...ary];
console.log(ary)
结果:
[100,10, 20]
shift
shift: 删除数组第一项
@params
@return
删除的那一项
let ary = [10, 20];
let res=ary.shift();
console.log(res,ary)
结果:
10,Array(1)
0: 20
length: 1
__proto__: Array(0)
基于原生js中的delete,把数组当成普通对象,可以删除掉某一项内容,但还是不会影响数组本身的结构特点(length长度不会修改,所以真实数组项目中一般不用del删除)
pop
pop: 删除数组最后一项
@params
@return
删除的那一项
let ary = [10, 20];
let res=ary.pop();
console.log(res,ary)
结果:
20,Array(1)
0: 10
length: 1
__proto__: Array(0)
扩展:基于原生js让数组长度减少一位
let ary = [10, 20];
ary.length--; =>ary.length-1
console.log(ary)
结果:
Array(1)
0: 10
length: 1
__proto__: Array(0)
splice
splice: 实现数组的删除修改
@params
参数:n,m,x
1,不写x:
n,m 数字 从索引n开始,删除m个元素,只写n,不写m,默认删除到末尾
2.n,m,x 从索引n开始删除m个元素,用x占用删除部分
3.n,0,x 从索引n开始,一个都不剩,把x放到索引n的前面
@return
把删除的部分用新数组返回
删除
let ary = [10,20,30,40];
let res=ary.splice(2,2);
console.log(res,ary)
结果:
(2) [30, 40] 删除的
(2) [10, 20] 结果
替换修改
let ary = [10,20,30,40];
let res=ary.splice(2,2, "这里","是","用来","补位的");
console.log(res,ary)
结果:
(2) [30, 40] 删除的
(6) [10, 20, "这里","是","用来","补位的"] 替换结果
添加
let ary = [10,20,30,40];
let res=ary.splice(1,0, "这里","是","用来","补位的");
console.log(res,ary)
补位结果:
[] 删除的
(8) [10, "这里", "是", "用来", "补位的", 20, 30, 40] 结果
//向数组末尾追加 aaaa
ary.splice(ary.length,0,"aaaa")
//向数组开始追加 aaaa
ary.splice(0,0,"aaaa")
2.数组的排序/排列
reverse
reverse: 数组倒过来排列
@params
@return
排列过后的新数组,原来数组改变
let ary1 = [10, 20, 30, 40,20];
console.log(ary1.reverse())
结果:
[20, 40, 30, 20,10]
sort
sort: 实现数组的排序
@params
可传可不传
@return
排序过后的新数组,原来数组改变
sort方法中如果不传递参数,是无法处理10以上的数字排序(它默认按照第一项第一个字符来排,不是我们想要的效果)
let ary1 = [1,8,3,9,2,0];
ary1.sort()
console.log(ary1) => [0,1,2,3,8,9]
//sort方法中如果不传递参数,是无法处理10以上的数字排序(它默认按照第一项第一个字符来排,不是我们想要的效果)
let ary2 = [12,15,9,28,10,22];
ary2.sort()
console.log(ary2) => [10,12,15,22,28,9] //它默认按照第一项第一个字符来排
扩展处理
let ary = [12,15,9,28,10,22];
//由小到大排序
ary.sort((a,b)=>{
//a,b是相邻的两项
return a-b;
})
console.log(ary) => 结果 [9, 10, 12, 15, 22, 28]
//由大到小排序
ary.sort((a,b)=>{
return b-a;
})
console.log(ary) => 结果 [28, 22, 15, 12, 10, 9]