數(shù)組的增刪改排列排序push,unshift,pop,shift,splice,reverse,sort(原數(shù)組都會改變)

數(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]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容