1、join()
數(shù)組轉(zhuǎn)字符串,方法只接收一個(gè)參數(shù)
const arr = [1, 2, 3, 4]
console.log(arr.join()); // 1,2,3,4
console.log(arr.join('')); // 1234
console.log(arr.join(' ')); // 1 2 3 4
console.log(arr.join('?')); // 1?2?3?4
實(shí)現(xiàn)重復(fù)字符串
const repeatStr = (str, num) => {
// str 需要重復(fù)的字符串 num 需要重復(fù)的次數(shù)
return new Array(num + 1).join(str)
}
console.log(repeatStr("哈", 5)) // 哈哈哈哈哈
2、shift() 和 unshift()
shift:方法用于把數(shù)組的第一個(gè)元素從其中刪除七兜,并返回第一個(gè)元素的值,會(huì)改變?cè)瓟?shù)組缚俏。
unshift:方法可向數(shù)組的開頭添加一個(gè)或更多元素惊搏,并返回新的長(zhǎng)度贮乳,會(huì)改變?cè)瓟?shù)組忧换。
let arr = [1, 2, 3, 4]
console.log(arr.shift(), arr) // 1 [2, 3, 4]
console.log(arr.unshift('a'), arr) // 4 ['a', 2, 3, 4]
3、push()和pop()
push:方法可向數(shù)組的末尾添加一個(gè)或多個(gè)元素向拆,并返回新的長(zhǎng)度亚茬,會(huì)改變?cè)瓟?shù)組。
pop:方法用于刪除并返回?cái)?shù)組的最后一個(gè)元素浓恳,會(huì)改變?cè)瓟?shù)組刹缝。
4、sort()
方法用于對(duì)數(shù)組的元素進(jìn)行排序颈将,會(huì)改變?cè)瓟?shù)組梢夯。
const arr = [5, 3, 6, 1 ,0]
console.log(arr.sort(),arr) // [0, 1, 3, 5, 6] [0, 1, 3, 5, 6]
arr.sort((a, b) => {
return a - b // [0, 1, 3, 5, 6] 升序 默認(rèn)正序
// return b - a // [6, 5, 3, 1, 0] 降序
})
5、reverse() (反轉(zhuǎn)數(shù)組)
方法用于顛倒數(shù)組中元素的順序晴圾,會(huì)改變?cè)瓟?shù)組颂砸。
const arr = [5, 3, 6, 1 ,0]
console.log(arr.reverse(), arr) // [0, 1, 6, 3, 5] [0, 1, 6, 3, 5]
6、splice()
splice() 方法向/從數(shù)組中添加/刪除元素死姚,然后返回被刪除的元素人乓,會(huì)改變?cè)瓟?shù)組。
arr.splice(index , length, item1,.....,itemX)
index:必需都毒。整數(shù)色罚,規(guī)定添加/刪除元素的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置账劲。
length:必需戳护。要?jiǎng)h除的元素?cái)?shù)量金抡。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目腌且。
item1, ..., itemX:可選竟终。向數(shù)組添加的新元素。
返回值:含有被刪除的元素的數(shù)組切蟋,若沒(méi)有刪除元素則返回一個(gè)空數(shù)組统捶。
const arr = [5, 3, 6, 1 ,0]
// console.log(arr.splice(2, 1), arr) // 刪除一個(gè) [6] [5, 3, 1 ,0]
// console.log(arr.splice(2, 2), arr) // 刪除兩個(gè) [6, 1] [5, 3 ,0]
// console.log(arr.splice(2, 1, 0), arr) // 替換一個(gè) [6] [5, 3, 0, 1 ,0]
// console.log(arr.splice(2, 1, 0, 0), arr) // 一個(gè)替換兩個(gè) [6] [5, 3, 0, 0, 1 ,0]
// console.log(arr.splice(1, 2, 0,), arr) // 兩個(gè)替換一個(gè) [3, 6] [5, 0, 1 ,0]
console.log(arr.splice(2, 0, 0, 0), arr) // 添加兩個(gè) [] [5, 3, 0, 0, 6, 1 ,0]
7、slice()
方法從數(shù)組中截取元素柄粹,然后返回截取到的元素組成的數(shù)組喘鸟,不會(huì)改變?cè)瓟?shù)組。
arr.slice(start , end);
start:必需驻右。規(guī)定從何處開始選取什黑。如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開始算起的位置堪夭。也就是說(shuō)愕把,-1 指最后一個(gè)元素,-2 指倒數(shù)第二個(gè)元素森爽,以此類推恨豁。
end:可選。規(guī)定從何處結(jié)束選取爬迟。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)橘蜜。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素付呕。如果這個(gè)參數(shù)是負(fù)數(shù)计福,那么它規(guī)定的是從數(shù)組尾部開始算起的元素。
返回值:返回一個(gè)新的數(shù)組徽职,包含從 start 到 end (不包括該元素)的 arr 中的元素象颖。
const arr = [5, 3, 6, 1 ,0]
// console.log(arr.slice(0, 2)) // [5, 3]
// console.log(arr.slice(1)) // [3, 6, 1 ,0]
// console.log(arr.slice(-1)) // [0]
// console.log(arr.slice(-5, 3)) // [5, 3, 6]
console.log(arr.slice(-5, -3)) // [5, 3]
console.log(arr) // [5, 3, 6, 1 ,0]
8、concat
方法用于連接兩個(gè)或多個(gè)數(shù)組姆钉。該方法不會(huì)改變現(xiàn)有的數(shù)組说订,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。在沒(méi)有給 concat()方法傳遞參數(shù)的情況下育韩,它只是復(fù)制當(dāng)前數(shù)組并返回副本克蚂。
const arr = [5, 3, 6, 1 ,0]
const brr = [0, 1, 2]
console.log(arr.concat(brr)) // [5, 3, 6, 1, 0, 0, 1, 2]
console.log(brr.concat(arr)) // [0, 1, 2, 5, 3, 6, 1, 0]
console.log(arr.concat()) // [5, 3, 6, 1, 0]
console.log(arr) // [5, 3, 6, 1, 0]
console.log(brr) // [0, 1, 2]
ES5新增
9、indexOf()和 lastIndexOf()
方法都返回要查找的元素在數(shù)組中首次出現(xiàn)的位置筋讨,在沒(méi)找到的情況下返回-1埃叭。
indexOf()--------array.indexOf(item,start) (從數(shù)組的開頭(位置 0)開始向后查找)
item: 必須。查找的元素悉罕。
start:可選的整數(shù)參數(shù)赤屋。規(guī)定在數(shù)組中開始檢索的位置立镶。如省略該參數(shù),則將從0開始檢索类早。
lastIndexOf()--------array.lastIndexOf(item,start) (從數(shù)組的末尾開始向前查找)
item: 必須媚媒。查找的元素。
start:可選的整數(shù)參數(shù)涩僻。規(guī)定在數(shù)組中開始檢索的位置缭召。如省略該參數(shù),則將從 array.length-1開始檢索逆日。
const arr = [5, 6, 3, 6, 1 ,0]
console.log(arr.indexOf(6)) // 1
console.log(arr.indexOf(6, 2)) // 3
console.log(arr.lastIndexOf(6)) // 3
console.log(arr.lastIndexOf(6, 2)) // 1
10嵌巷、迭代方法:forEach()、map()室抽、filter()搪哪、some()、every()
forEach()
對(duì)數(shù)組進(jìn)行遍歷循環(huán)坪圾,這個(gè)方法沒(méi)有返回值晓折。
array.forEach((cur , index , arr) => {}, thisValue)
cur : 必需。當(dāng)前元素
index: 可選兽泄。當(dāng)前元素的索引值漓概。
arr : 可選。當(dāng)前元素所屬的數(shù)組對(duì)象已日。
thisValue: 可選垛耳。傳遞給函數(shù)的值一般用 "this" 值。如果這個(gè)參數(shù)為空飘千, "undefined" 會(huì)傳遞給 "this" 值
const arr = [1, 2, 3]
arr.forEach((cur, index, arr) => {
console.log(cur, index, arr)
})
1 0 [1, 2, 3]
2 1 [1, 2, 3]
3 2 [1, 2, 3]
map()
指“映射”,方法返回一個(gè)新數(shù)組栈雳,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值护奈。
array.map((cur , index , arr) => {}, thisValue)
參數(shù)含義同forEach()
const arr = [1, 2, 3]
const newArr = arr.map((cur, index) => {
return cur * index
})
console.log(newArr) // [0, 2, 6]
filter()
見(jiàn) JavaScript數(shù)組常用方法---filter
some()
判斷數(shù)組中是否存在滿足條件的項(xiàng),只要有一項(xiàng)滿足條件哥纫,就會(huì)返回true霉旗。
array.some((cur , index , arr) => {}, thisValue)
參數(shù)含義同forEach()
const arr = [1, 2, 3]
const res1 = arr.some(cur => cur > 3) // false
const res2 = arr.some(cur => cur > 2) // true
every()
判斷數(shù)組中每一項(xiàng)都是否滿足條件,只有所有項(xiàng)都滿足條件蛀骇,才會(huì)返回true厌秒。
array.every((cur , index , arr) => {}, thisValue)
參數(shù)含義同forEach()
const arr = [1, 2, 3]
const res1 = arr.every(cur => cur > 2) // false
const res2 = arr.every(cur => cur > 0) // true
11、兩個(gè)歸并方法reduce()擅憔、reduceRight()
見(jiàn) JavaScript數(shù)組常用方法---reduce
注意:
reduce()方法從數(shù)組的第一項(xiàng)開始鸵闪,逐個(gè)遍歷到最后。而 reduceRight()則從數(shù)組的最后一項(xiàng)開始暑诸,向前遍歷到第一項(xiàng)蚌讼。
ES6新增
12辟灰、Array.from()
方法是用于類似數(shù)組的對(duì)象(即有l(wèi)ength屬性的對(duì)象)和可遍歷對(duì)象轉(zhuǎn)為真正的數(shù)組。
const obj = {
0: 'lin',
1: 'chen',
2: 'wei',
length: 3
}
console.log(Array.from(obj)) // ["lin", "chen", "wei"]
13篡石、Array.of()
方法是將一組值轉(zhuǎn)變?yōu)閿?shù)組芥喇,參數(shù)不分類型,只分?jǐn)?shù)量凰萨,數(shù)量為0返回空數(shù)組继控。
console.log(Array.of(1,3,5)) // [1, 3, 5]
console.log(Array.of([1,3,5])) // [[1, 3, 5]]
console.log(Array.of("a",3,"5")) // ["a", 3, "5"]
console.log(Array.of(undefined)) // [undefined]
console.log(Array.of()) // []
14、find()
方法返回通過(guò)測(cè)試(函數(shù)內(nèi)判斷)的數(shù)組的第一個(gè)元素的值胖眷。方法為數(shù)組中的每個(gè)元素都調(diào)用一次函數(shù)執(zhí)行湿诊。當(dāng)數(shù)組中的元素在測(cè)試條件時(shí)返回 true 時(shí), find() 返回符合條件的元素,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù)瘦材。如果沒(méi)有符合條件的元素返回 undefined厅须。
Array.find((cur, index, arr) => {})
參數(shù)含義同forEach()
const arr = [1, 2, 3]
const res1 = arr.find(cur => cur > 3) // undefined
const res2 = arr.find(cur => cur > 0) // 1
使用
根據(jù)id獲取數(shù)組中的對(duì)象
const arr = [
{
id: 1,
name: 'lin'
},
{
id: 2,
name: 'lin'
},
{
id: 3,
name: 'lin'
},
]
const obj = arr.find(cur => cur.id === 1)
console.log(obj) // {id: 1, name: 'lin'}
15、findIndex ()
findIndex和find差不多食棕,不過(guò)默認(rèn)返回的是索引朗和,如果沒(méi)有符合條件的元素返回 -1。
const arr = [
{
id: 1,
name: 'lin'
},
{
id: 2,
name: 'lin'
},
{
id: 3,
name: 'lin'
},
]
const index1 = arr.findIndex (cur => cur.id === 1) // 0
const index2 = arr.findIndex (cur => cur.id === 4) // -1
16簿晓、fill()
方法用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素眶拉。不包括終止索引。會(huì)改變?cè)瓟?shù)組憔儿。
array.fill(value, start, end)
value:必需忆植。填充的值。
start:可選谒臼。開始填充位置朝刊。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開始算起蜈缤。
end:可選拾氓。停止填充位置 (默認(rèn)為 array.length)。如果這個(gè)參數(shù)是負(fù)數(shù)底哥,那么它規(guī)定的是從數(shù)組尾部開始算起咙鞍。
const arr = [1, 2, 3, 4, 5]
// console.log(arr.fill(0), arr) // [0, 0, 0, 0, 0] [0, 0, 0, 0, 0]
// console.log(arr.fill(0, 1)) // [1, 0, 0, 0, 0]
// console.log(arr.fill(0, 1, 3)) // [1, 0, 0, 4, 5]
// console.log(arr.fill(0, -3)) // [1, 2, 0, 0, 0]
console.log(arr.fill(0, -3, -1)) // [1, 2, 0, 0, 5]
17、遍歷數(shù)組方法 keys()趾徽、values()续滋、entries()
這三個(gè)方法都是返回一個(gè)遍歷器對(duì)象,可用for...of循環(huán)遍歷孵奶,唯一區(qū)別:keys()是對(duì)鍵名的遍歷疲酌、values()對(duì)鍵值的遍歷、entries()是對(duì)鍵值對(duì)的遍歷拒课。
keys()
const arr = ["a", "b", "c"]
for(let item of arr.keys()){
console.log(item)
}
打印結(jié)果:
0
1
2
values()
const arr = ["a", "b", "c"]
for(let item of arr.values()){
console.log(item)
}
打印結(jié)果:
a
b
c
entries()
const arr = ["a", "b", "c"]
for(let item of arr.entries()){
console.log(item)
}
打印結(jié)果:
[0, "a"]
[1, "b"]
[2, "c"]
const arr = ["a", "b", "c"]
for(let [index, item] of arr.entries()){
console.log(index +": " + item)
}
打印結(jié)果:
0: a
1: b
2: c
18徐勃、includes()
方法用來(lái)判斷一個(gè)數(shù)組是否包含一個(gè)指定的值事示,如果是返回 true,否則false僻肖。
arr.includes(item, start)
item: 必須肖爵。需要查找的元素。
start:可選臀脏。從該索引處開始查找 item劝堪。如果為負(fù)值,則按升序從 array.length + start的索引開始搜索揉稚。默認(rèn)為 0秒啦。
const arr = [1, 2, 3, 4, 5, 2]
console.log(arr.includes(2)) // true
console.log(arr.includes(2, 3)) // true
console.log(arr.includes(3, 3)) // false
console.log(arr.includes(2, -3)) // true
console.log(arr.includes(3, -3)) // false
19、copyWithin()
方法用于從數(shù)組的指定位置拷貝元素到數(shù)組的另一個(gè)指定位置中搀玖,會(huì)覆蓋原有成員余境。
array.copyWithin(target , start , end)
target :必需。從該位置開始替換數(shù)據(jù)灌诅。
start :可選芳来。從該位置開始讀取數(shù)據(jù),默認(rèn)為 0 猜拾。如果為負(fù)值即舌,表示倒數(shù)。
end: 可選挎袜。到該位置前停止讀取數(shù)據(jù)顽聂,默認(rèn)等于數(shù)組長(zhǎng)度。如果為負(fù)值盯仪,表示倒數(shù)紊搪。
const arr = [1, 2, 3, 4, 5]
// console.log(arr.copyWithin(0), arr) // [1, 2, 3, 4, 5]
// console.log(arr.copyWithin(0, 2, 4), arr) // [3, 4, 3, 4, 5] [3, 4, 3, 4, 5]
console.log(arr.copyWithin(0, -4, -2)) // [2, 3, 3, 4, 5]