數(shù)組常用的方法
- 學(xué)習(xí)思路:通過(guò)四個(gè)維度
- 方法的作用
- 是否需要傳參
- 是否有返回值
- 原數(shù)組發(fā)生改變
- 數(shù)組常用的方法
數(shù)組方法有:數(shù)組的增加,刪除,替換,拼接,數(shù)組轉(zhuǎn)字符串,數(shù)組翻轉(zhuǎn),克隆,截取,排序,遍歷
var ary=["red","blue","green"]
- 數(shù)組的增加
-push()- 作用:給數(shù)組末尾增加一項(xiàng)
- 參數(shù): 需要實(shí)參
- 返回值:數(shù)組的長(zhǎng)度
- 原數(shù)組發(fā)生改變
let reg = ary.push("yellow"); 原數(shù)組:console.log(ary); //["red", "blue", "green","yellow"] 返回值:console.log(reg);//4
-
unshift()
- 作用:給數(shù)組開(kāi)頭增加一項(xiàng)
- 參數(shù):需要實(shí)參
- 返回值:數(shù)組的長(zhǎng)度
- 原數(shù)組發(fā)生改變
let reg = ary.unshift("yellow"); 原數(shù)組:console.log(ary); // ["yellow", "red", "blue", "green"] 返回值:console.log(reg);//4 -
splice(index,0,要添加的內(nèi)容)
- 作用:增加
- 參數(shù):(索引,刪除0個(gè),要添加的內(nèi)容)
- 返回值:[] 空數(shù)組
- 原數(shù)組發(fā)生改變
添加的時(shí)候是在索引的前面添加
let reg = ary.splice(0,0,"紅色"); //let reg = ary.splice(ary.length,0,"紅色");//給數(shù)組末尾添加 原數(shù)組:console.log(ary);//["紅色", "red", "blue", "green"] 返回值:console.log(reg);//[]
- 數(shù)組的刪除
-shift()- 作用:刪除數(shù)組開(kāi)頭一項(xiàng)
- 參數(shù):不需要參數(shù)
- 返回值:刪除的那一項(xiàng)
- 原數(shù)組發(fā)生改變
let reg = ary.shift(); 原數(shù)組:console.log(ary); // [ "blue", "green"] 返回值:console.log(reg);//red
- pop()
- 作用:刪除數(shù)組末尾一項(xiàng)
- 參數(shù):不需要參數(shù)
- 返回值: 刪除的那一項(xiàng)
- 原數(shù)組發(fā)生改變
let reg = ary.pop(); 原數(shù)組:console.log(ary); // [ "red",blue"] 返回值:console.log(reg);// green - splice(index,2)
- 作用:在指定的索引開(kāi)始,刪除幾個(gè);
- 參數(shù):(索引,刪除幾個(gè))
- 返回值:將刪除的內(nèi)容以一個(gè)新數(shù)組的形式返回
- 原數(shù)組發(fā)生改變
let reg = ary.splice(0, 2); //let reg = ary.splice(ary.length-1,1);//刪除數(shù)組末尾一項(xiàng) 原數(shù)組:console.log(ary);//["green"] 返回值:console.log(reg);//["red", "blue"]
- 數(shù)組的替換
- splice(index,刪除幾個(gè),要替換的內(nèi)容)//刪除幾個(gè)不能為0,因?yàn)閯h除0個(gè)就是添加了
- 作用:從指定的索引開(kāi)始,刪除幾個(gè),并替換我們要替換的內(nèi)容;splice(index,deleteCount,'aaa','hhh')
- 參數(shù):三個(gè)參數(shù)
- 返回值:被刪除的內(nèi)容以一個(gè)新數(shù)組的形式返回
- 原數(shù)組發(fā)生改變
let reg = ary.splice(0, 2,"黃色","粉色"); 原數(shù)組:console.log(ary);//["黃色", "粉色", "green"] 返回值:console.log(reg);//["red", "blue"]
- splice(index,刪除幾個(gè),要替換的內(nèi)容)//刪除幾個(gè)不能為0,因?yàn)閯h除0個(gè)就是添加了
- 數(shù)組的克隆
- splice(0)
- 作用:克隆,其實(shí)是刪除了原數(shù)組,而返回值是刪除的原來(lái)數(shù)組的內(nèi)容;
- 參數(shù):參數(shù)為0
- 返回值:將刪除的內(nèi)容以一個(gè)新數(shù)組的形式返回
- 原數(shù)組發(fā)生改變
let reg = ary.splice(0); 原數(shù)組:console.log(ary);//[] 返回值:console.log(reg);//["red", "blue", "green"] - concat()
- 作用:克隆
- 參數(shù):空
- 返回值:將克隆的內(nèi)容以一個(gè)新數(shù)組返回
- 原數(shù)組:不變
let reg = ary.concat(); 原數(shù)組:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);//["red", "blue", "green"] - slice(為0或者空)
- 作用:克隆
- 參數(shù):為0或者空
- 返回值:將克隆的內(nèi)容以一個(gè)新數(shù)組返回
- 原數(shù)組:不變
let reg = ary.slice(); //let reg = ary.slice(0); 原數(shù)組:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);//["red", "blue", "green"]
- splice(0)
- 數(shù)組的查找/截取
- slice(n,m)
- 作用:從索引n開(kāi)始查找到索引m,包括前不包括后
- 參數(shù):兩個(gè)
- 返回值: 查找到的內(nèi)容以一個(gè)新數(shù)組返回
- 原數(shù)組不發(fā)生改變
let reg = ary.slice(0,2); 原數(shù)組:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);//["red", "blue"]面試題:找到數(shù)組中[n,m]項(xiàng)
slice(n-1,m) // 第n項(xiàng)的索引是n-1,m的索引為m-1,但是slice包括前一項(xiàng)不包后括一項(xiàng),m-1+1
- slice(n,m)
- 數(shù)組的拼接
- concat()
- 作用: 拼接/克隆數(shù)組
- 參數(shù):不確定,相拼接幾個(gè)就寫幾個(gè)數(shù)組名,也可以直接可以寫成數(shù)組形式
- 返回值: 拼接成的新數(shù)組
- 原數(shù)組不發(fā)生改變
let reg = ary.concat("紅色","黃色"); 原數(shù)組:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);// ["red", "blue", "green", "紅色","黃色"]let ary1 = ["red", "blue", "紅色"]; let reg = ary.concat(ary,ary1); 原數(shù)組:console.log(ary);//["red", "blue", "green"] 返回值:console.log(reg);// ["red", "blue", "green","red", "blue", "green", "紅色"]
- concat()
- 數(shù)組轉(zhuǎn)字符串
- toString()
- 作用:將數(shù)組轉(zhuǎn)為字符串,默認(rèn)以‘ ,’分割
- 參數(shù):無(wú)
- 返回值:以逗號(hào)分割的字符串
- 原數(shù)組不發(fā)生改變
let reg = ary.toString(); console.log(ary);//["red", "blue", "green"] console.log(reg);// red,blue,green console.log(typeof reg);//string - join()
- 作用:將數(shù)組轉(zhuǎn)為字符串
- 參數(shù):分割形式
- 返回值:以分割形式分割的字符串
- 原數(shù)組不發(fā)生改變
let reg = ary.join(); console.log(ary);//["red", "blue", "green"] console.log(reg);// red,blue,green console.log(typeof reg);//stringlet reg = ary.join("+"); console.log(ary);//["red", "blue", "green"] console.log(reg);// red+blue+green console.log(typeof reg);//string
- toString()
- 數(shù)組的翻轉(zhuǎn)
- reverse()
- 作用:數(shù)組翻轉(zhuǎn)
- 參數(shù):無(wú)
- 返回值:被翻轉(zhuǎn)后的數(shù)組
- 原數(shù)組發(fā)生改變
let ary = ["我", "是", "誰(shuí)"]; let reg = ary.reverse(); console.log(ary);//["誰(shuí)", "是", "我"] console.log(reg);// ["誰(shuí)", "是", "我"]
- reverse()
- 數(shù)組排序
- sort
ary.sort(function(a,b){ return b-a;//從大到小排序 //return b-a;//從小到大排序 })
- sort
- 數(shù)組常用但不兼容的方法
- indexOf()
- 作用:查找內(nèi)容
- 參數(shù):要查找的內(nèi)容
- 返回值: 如果找到返回內(nèi)容對(duì)應(yīng)的索引,如果沒(méi)找到返回-1
- 原數(shù)組不變
let ary = ["我", "是", "誰(shuí)"]; let reg = ary.indexOf("我"); console.log(ary);//["誰(shuí)", "是", "我"] console.log(reg);// 0let ary = ["我", "是", "誰(shuí)"]; let reg = ary.indexOf("去"); console.log(ary);//["誰(shuí)", "是", "我"] console.log(reg);// -1
- indexOf()
- forEach(callback,thisArg)
- 作用:用來(lái)遍歷數(shù)組
- 參數(shù):兩個(gè),第一個(gè)是回調(diào)函數(shù),第二個(gè)是改變this的
- 返回值: undefined 沒(méi)有返回值
- 原數(shù)組不變
var ary=[10,20,30,40]; ary.forEach(function(item,index,input){ }) - map()
- 和forEach用法一樣區(qū)別是map有返回值
- 非數(shù)組方法
-
給數(shù)組末尾添加
- ary[arr.length]=xxx
var ary=[1,2,3]; ary[ary.length]=4; console.log(ary)//[1,2,3,4]
- ary[arr.length]=xxx
-
刪除數(shù)組最后一項(xiàng)
- ary.length--
- ary.length-=1
- ary.length=ary.length-1
-
實(shí)現(xiàn)數(shù)組克隆
- for循環(huán)
var ary=[1,2,3]; var ary1=[] for(var i=0; i<ary.length;i++){ ary1.push(ary[i]) } console.log(ary1)//[1,2,3] -