數(shù)組的常用方法路線:
方法的作用和含義
方法的實(shí)參(類型和含義)
方法的返回值
原來數(shù)組是否會發(fā)生改變
1.數(shù)組的增刪改
這一部分都會修改原有的數(shù)組
push
push: 向數(shù)組末尾增加內(nèi)容
@params
多個任意類型
@return
新增后數(shù)組的長度
let ary = [10, 20];
let res=ary.push("aa", 44);
console.log(res,ary)
結(jié)果:
4 (4) [10, 20, "aa", 44]
擴(kuò)展 :基于原生js操作鍵值對添加內(nèi)容
let ary = [10, 20];
ary[ary.length] = 40;
console.log(res, ary)
結(jié)果:
[10, 20, 40]
unshift
unshift: 向數(shù)組開頭增加一項(xiàng)
@params
多個任意類型
@return
新增后數(shù)組的長度
let ary = [10, 20];
let res=ary.unshift("aa", 44);
console.log(res,ary)
結(jié)果:
4 (4) [ "aa", 44,10, 20]
擴(kuò)展 :基于原生es6展開運(yùn)算符,把原來的ary克隆了一份,在新數(shù)組中創(chuàng)建第一項(xiàng)
let ary = [10, 20];
ary=[100, ...ary];
console.log(ary)
結(jié)果:
[100,10, 20]
shift
shift: 刪除數(shù)組第一項(xiàng)
@params
@return
刪除的那一項(xiàng)
let ary = [10, 20];
let res=ary.shift();
console.log(res,ary)
結(jié)果:
10,Array(1)
0: 20
length: 1
__proto__: Array(0)
基于原生js中的delete,把數(shù)組當(dāng)成普通對象,可以刪除掉某一項(xiàng)內(nèi)容,但還是不會影響數(shù)組本身的結(jié)構(gòu)特點(diǎn)(length長度不會修改,所以真實(shí)數(shù)組項(xiàng)目中一般不用del刪除)
pop
pop: 刪除數(shù)組最后一項(xiàng)
@params
@return
刪除的那一項(xiàng)
let ary = [10, 20];
let res=ary.pop();
console.log(res,ary)
結(jié)果:
20,Array(1)
0: 10
length: 1
__proto__: Array(0)
擴(kuò)展:基于原生js讓數(shù)組長度減少一位
let ary = [10, 20];
ary.length--; =>ary.length-1
console.log(ary)
結(jié)果:
Array(1)
0: 10
length: 1
__proto__: Array(0)
splice
splice: 實(shí)現(xiàn)數(shù)組的刪除修改
@params
參數(shù):n,m,x
1,不寫x:
n,m 數(shù)字 從索引n開始,刪除m個元素,只寫n,不寫m,默認(rèn)刪除到末尾
2.n,m,x 從索引n開始刪除m個元素,用x占用刪除部分
3.n,0,x 從索引n開始,一個都不剩,把x放到索引n的前面
@return
把刪除的部分用新數(shù)組返回
刪除
let ary = [10,20,30,40];
let res=ary.splice(2,2);
console.log(res,ary)
結(jié)果:
(2) [30, 40] 刪除的
(2) [10, 20] 結(jié)果
替換修改
let ary = [10,20,30,40];
let res=ary.splice(2,2, "這里","是","用來","補(bǔ)位的");
console.log(res,ary)
結(jié)果:
(2) [30, 40] 刪除的
(6) [10, 20, "這里","是","用來","補(bǔ)位的"] 替換結(jié)果
添加
let ary = [10,20,30,40];
let res=ary.splice(1,0, "這里","是","用來","補(bǔ)位的");
console.log(res,ary)
補(bǔ)位結(jié)果:
[] 刪除的
(8) [10, "這里", "是", "用來", "補(bǔ)位的", 20, 30, 40] 結(jié)果
//向數(shù)組末尾追加 aaaa
ary.splice(ary.length,0,"aaaa")
//向數(shù)組開始追加 aaaa
ary.splice(0,0,"aaaa")
2.數(shù)組的排序/排列
reverse
reverse: 數(shù)組倒過來排列
@params
@return
排列過后的新數(shù)組,原來數(shù)組改變
let ary1 = [10, 20, 30, 40,20];
console.log(ary1.reverse())
結(jié)果:
[20, 40, 30, 20,10]
sort
sort: 實(shí)現(xiàn)數(shù)組的排序
@params
可傳可不傳
@return
排序過后的新數(shù)組,原來數(shù)組改變
sort方法中如果不傳遞參數(shù),是無法處理10以上的數(shù)字排序(它默認(rèn)按照第一項(xiàng)第一個字符來排,不是我們想要的效果)
let ary1 = [1,8,3,9,2,0];
ary1.sort()
console.log(ary1) => [0,1,2,3,8,9]
//sort方法中如果不傳遞參數(shù),是無法處理10以上的數(shù)字排序(它默認(rèn)按照第一項(xiàng)第一個字符來排,不是我們想要的效果)
let ary2 = [12,15,9,28,10,22];
ary2.sort()
console.log(ary2) => [10,12,15,22,28,9] //它默認(rèn)按照第一項(xiàng)第一個字符來排
擴(kuò)展處理
let ary = [12,15,9,28,10,22];
//由小到大排序
ary.sort((a,b)=>{
//a,b是相鄰的兩項(xiàng)
return a-b;
})
console.log(ary) => 結(jié)果 [9, 10, 12, 15, 22, 28]
//由大到小排序
ary.sort((a,b)=>{
return b-a;
})
console.log(ary) => 結(jié)果 [28, 22, 15, 12, 10, 9]