首先我們得知道數(shù)組是什么块促?(是什么呢?_?)
- 數(shù)組是一種數(shù)據(jù)類型
- 數(shù)組可以儲(chǔ)存不同數(shù)據(jù)類型的數(shù)據(jù)(啥都可以存哦职抡!(●'?'●))
創(chuàng)建數(shù)組
怎么創(chuàng)建數(shù)組呢脊串?有兩個(gè)方法直接量法和構(gòu)造函數(shù)法
直接量法
const arr = ['zhangsan','lisi']
構(gòu)造函數(shù)法
定義:構(gòu)造函數(shù)就是構(gòu)造對(duì)象的一種模具(函數(shù))
構(gòu)造函數(shù)的語(yǔ)法:任何一個(gè)構(gòu)造函數(shù)在構(gòu)造對(duì)象的時(shí)候必須遵循固定語(yǔ)法(這里必須記住哦研铆,是固定的用法!(╯▔皿▔)╯):
new Array()
new String()
new Boolean()
new Number()
//new : 新的(new一個(gè)對(duì)象劳较,new一個(gè)新數(shù)組)
Array()(沒(méi)看錯(cuò)驹止,就是這樣用(●ˇ?ˇ●),平常我們都是用直接法做的(づ ̄3 ̄)づ╭?~)
var arr = new Array('hehe',1314,true)
數(shù)組的特點(diǎn)
1. 數(shù)組是有索引的
- 數(shù)組的第一個(gè)值的索引是0
- 第二個(gè)是1
- ......
- 最后一個(gè)的是數(shù)組的長(zhǎng)度length-1
2. 數(shù)組的比較
- 簡(jiǎn)單數(shù)組類型比較值(內(nèi)存中的值)
- 復(fù)雜數(shù)據(jù)類型比較址(內(nèi)存中的地址)
- 簡(jiǎn)單數(shù)據(jù)類型復(fù)制是復(fù)制值
- 復(fù)雜數(shù)據(jù)類型復(fù)制是復(fù)制址
如何訪問(wèn)數(shù)組
使用方括號(hào)加下標(biāo)訪問(wèn)數(shù)組元素(別用錯(cuò)了观蜗,是下標(biāo)臊恋,別第一個(gè)就用1,第一個(gè)得用0墓捻!╰(‵□′)╯)
const arr = [1,2,3]
arr[0] //1
arr[1] //2
arr[2] //3
arr[3] //undefined
遍歷數(shù)組的方法
- for 循環(huán)
var arr = ['hello',200,true,[1,2,3],null]
for(let i = 0 ; i < arr.length ; i++){
console.log(Array.isArray(arr[i]))
}
//先返回3次false 再返回1次true 最后返回一次false
- forEach
var arr = ['hello',200,true,[1,2,3],null]
arr.forEach(x=>{
console.log(Array.isArray(x))
})
//先返回3次false 再返回1次true 最后返回一次false
array.length
定義:返回?cái)?shù)組的長(zhǎng)度
語(yǔ)法:
- 主人是數(shù)組
- length是屬性抖仅,沒(méi)有參數(shù)
返回值:數(shù)組的長(zhǎng)度
- 注意: length-1是任何一個(gè)數(shù)組最后一個(gè)元素
- []空數(shù)組的length是0
數(shù)組的方法
很多的欸,我肯定不會(huì)一下給你全部列出來(lái)啊砖第,可以去W3C(https://www.w3school.com.cn/jsref/jsref_obj_array.asp)去看哦(●'?'●)
Array.isArray
定義:Array.isArray()
方法用來(lái)檢測(cè)是否是數(shù)組
語(yǔ)法:
Array.isArray(value)
- value:是要檢測(cè)的值
返回值:
- true:如果是數(shù)組撤卢,返回true
- false:如果不是數(shù)組,返回false
實(shí)例
var arr = [[1,2],'12']
console.log(Array.isArray(arr[0])) //返回true
console.log(Array.isArray(arr[1])) //返回false
array.push()
定義:array.push()
用來(lái)在數(shù)組末尾添加元素
語(yǔ)法:
array.push('iteam1','iteam2','iteam3'....,'iteamx')
- 可以添加多個(gè)元素
返回值:返回新數(shù)組的長(zhǎng)度
實(shí)例
var arr = [1,2]
arr.push(3)
console.log(arr)
結(jié)果
6
array.pop()
定義:刪除數(shù)組的最后一個(gè)元素
語(yǔ)法:
array.pop() //無(wú)參數(shù)
返回值:返回刪除元素
實(shí)例:
var arr = [1,2,3]
var str = arr.pop()
console.log(str) //返回3
array.unshift()
定義:再數(shù)組前添加元素
語(yǔ)法:
array.unshift('iteam1','iteam2'...,'iteamX') //可添加多個(gè)元素
返回值:返回新數(shù)組長(zhǎng)度
實(shí)例:
var arr = [1,2]
arr.unshift(3)
console.log(arr) // 返回3
array.shift()
定義:刪除數(shù)組的第一個(gè)元素
語(yǔ)法:
array.shift() //無(wú)參數(shù)
- 無(wú)參數(shù)
返回值:返回刪除元素
實(shí)例:
var arr = [1,2,3]
var str = arr.shift()
console.log(str) //返回1
array.join()
定義:將數(shù)組通過(guò)連接符連接成一個(gè)字符串
語(yǔ)法:
array.join('鏈接符') //這個(gè)連接符啥都可以是
返回值:返回一個(gè)新的字符串
實(shí)例
var arr = ['apple','banner']
console.log(arr.join('and'))
結(jié)果
'appleandbanner'
array.reverse()
定義:反轉(zhuǎn)數(shù)組中元素的順序
語(yǔ)法:
array.reverse() //無(wú)參數(shù)
- 無(wú)參數(shù)
返回值:反轉(zhuǎn)后的數(shù)組
實(shí)例
var arr = ['hello',200,true,[1,2,3],null]
console.log(arr.reverse())
結(jié)果
['null',[1,2,3],true,200,'hello'] //相反
array.sort()
定義:可以對(duì)數(shù)組的元素按照字母或者數(shù)字進(jìn)行升序或降序重新排列,默認(rèn)是升序排列
注意:
● sort默認(rèn)是升序
● sort默認(rèn)是按照unicode編碼排序
語(yǔ)法:
array.sort()
參數(shù):
function(a,b){return a - b}
sort()方法比較兩個(gè)值時(shí)梧兼,將值發(fā)送給比較函數(shù)放吩,根據(jù)返回的(負(fù)、零羽杰、正)值對(duì)值進(jìn)行排序渡紫。
返回值:新數(shù)組
實(shí)例1
var arr = [2,,'a',5,0,'6',3,'7','t',1,]
console.log(arr.sort(
arr.sort((a,b)=>{
return a > b
}
))//升序排列
array.indexOf()
定義 :在數(shù)組中查詢指定元素。
注意:indexOf()只會(huì)返回第一次出現(xiàn)的位置
語(yǔ)法:
array.indexOf('x')
返回值:返回它的位置忽洛,未找到返回-1
實(shí)例
var arr = [1,2,3,4]
console.log(arr.indexOf(2))
//返回值為1
console.log(arr.indexOf(9))
//返回值為-1
array.concat()
定義:用于鏈接兩個(gè)或者多個(gè)數(shù)組
語(yǔ)法:
arr.concat(arr1,arr2,...,arrx)
返回值:返回一個(gè)新數(shù)組腻惠,不會(huì)修改原有數(shù)組
實(shí)例
var arr1= ["S60", "S90"];
var arr2 = ["XC40", "XC60", "XC90"];
var Volvo = arr1.concat(arr2);
array.slice()
定義:截取選取的部分?jǐn)?shù)組形成一個(gè)新的數(shù)組
語(yǔ)法:
arr.slice(start,end)
注釋:start為開始會(huì)獲取,end為結(jié)束欲虚,不會(huì)獲取
返回值:返回一個(gè)新的數(shù)組,不會(huì)改變?cè)袛?shù)組
實(shí)例
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1, 3);
//citrus = ['Orange','Lemon']
array.forEach()
- array:數(shù)組
- for:為了......
- Each:每一個(gè)
定義:方法按順序?yàn)閿?shù)組中的每個(gè)元素調(diào)用一次函數(shù)
語(yǔ)法:
array.forEach(function(currentValue, index, arr), thisValue)
- function:是一個(gè)函數(shù)
- 當(dāng)執(zhí)行forEach()方法的時(shí)候悔雹,每個(gè)數(shù)組元素都會(huì)調(diào)用一次函數(shù)參數(shù)
- 在調(diào)用函數(shù)的時(shí)候复哆,可以傳入以下參數(shù):
- currentValue:數(shù)組中的每一個(gè)元素
- index:表示數(shù)組的索引
- arr:表示當(dāng)前數(shù)組
- thisValue:設(shè)置this指向
返回值:undefined
實(shí)例:
var arr = [1,2,3]
arr.forEach(function(x,index,arr){
arr[index] = x+3
})
console.log(arr)//返回[4,5,6]
array.map()
定義:方法按順序?yàn)閿?shù)組中的每個(gè)元素調(diào)用一次函數(shù)
語(yǔ)法:
array.map(function(currentValue, index, arr), thisValue)
- function:是一個(gè)函數(shù)
- 當(dāng)執(zhí)行
map()
方法的時(shí)候,每個(gè)數(shù)組元素都會(huì)調(diào)用一次函數(shù)參數(shù) - 在調(diào)用函數(shù)的時(shí)候腌零,可以傳入以下參數(shù):
- currentValue:數(shù)組中的每一個(gè)元素
- index:表示數(shù)組的索引
- arr:表示當(dāng)前數(shù)組
- 當(dāng)執(zhí)行
- thisValue:設(shè)置this指向
返回值:數(shù)組
實(shí)例:
var arr = [1,2,3]
console.log(arr.map(function(x,index,arr){
return arr[index] = x+3
}))//返回[4,5,6]
array.filter()
定義:方法創(chuàng)建數(shù)組梯找,且按順序?yàn)閿?shù)組中的每個(gè)元素調(diào)用一次函數(shù)
語(yǔ)法:
array.filter(function(currentValue, index, arr), thisValue)
- function:是一個(gè)函數(shù)
- 當(dāng)執(zhí)行
filter()
方法的時(shí)候,每個(gè)數(shù)組元素都會(huì)調(diào)用一次函數(shù)參數(shù) - 在調(diào)用函數(shù)的時(shí)候益涧,可以傳入以下參數(shù):
- currentValue:數(shù)組中的每一個(gè)元素
- index:表示數(shù)組的索引
- arr:表示當(dāng)前數(shù)組
- 當(dāng)執(zhí)行
- thisValue:設(shè)置this指向
返回值: 包含所有通過(guò)測(cè)試的數(shù)組元素的數(shù)組锈锤。如果沒(méi)有元素通過(guò)測(cè)試,則返回一個(gè)空數(shù)組。
實(shí)例:
var arr = [1,2,3]
console.log(arr.filter(function(x,index,arr){
return x > 2
}))//返回[3]
array.every()
定義:檢測(cè)數(shù)組中的所有元素是否通過(guò)測(cè)試
語(yǔ)法:
array.every(function(currentValue, index, arr), thisValue)
- function:是一個(gè)函數(shù)
- 當(dāng)執(zhí)行
every()
方法的時(shí)候久免,每個(gè)數(shù)組元素都會(huì)調(diào)用一次函數(shù)參數(shù) - 在調(diào)用函數(shù)的時(shí)候浅辙,可以傳入以下參數(shù):
- currentValue:數(shù)組中的每一個(gè)元素
- index:表示數(shù)組的索引
- arr:表示當(dāng)前數(shù)組
- 當(dāng)執(zhí)行
- thisValue:設(shè)置this指向
返回值: true 或者 false
實(shí)例:
var arr = [1,2,3]
console.log(arr.every(function(x,index,arr){
return x > 2
}))//返回false
array.find()
定義:為數(shù)組內(nèi)每個(gè)元素進(jìn)行一次函數(shù)
語(yǔ)法:
array.find(function(currentValue, index, arr), thisValue)
- function:是一個(gè)函數(shù)
- 當(dāng)執(zhí)行
find()
方法的時(shí)候,每個(gè)數(shù)組元素都會(huì)調(diào)用一次函數(shù)參數(shù) - 在調(diào)用函數(shù)的時(shí)候阎姥,可以傳入以下參數(shù):
- currentValue:數(shù)組中的每一個(gè)元素
- index:表示數(shù)組的索引
- arr:表示當(dāng)前數(shù)組
- 當(dāng)執(zhí)行
- thisValue:設(shè)置this指向
返回值:返回?cái)?shù)組中通過(guò)第一次測(cè)試的元素记舆,沒(méi)有就返回undefined
實(shí)例:
var arr = [1,2,3]
console.log(arr.find(function(x,index,arr){
return x >= 2
}))//返回[2]
array.findIndex()
定義:按順序?yàn)閿?shù)組中的每個(gè)元素調(diào)用一次函數(shù)
語(yǔ)法:
array.findIndex(function(currentValue, index, arr), thisValue)
- function:是一個(gè)函數(shù)
- 當(dāng)執(zhí)行
findIndex()
方法的時(shí)候,每個(gè)數(shù)組元素都會(huì)調(diào)用一次函數(shù)參數(shù) - 在調(diào)用函數(shù)的時(shí)候呼巴,可以傳入以下參數(shù):
- currentValue:數(shù)組中的每一個(gè)元素
- index:表示數(shù)組的索引
- arr:表示當(dāng)前數(shù)組
- 當(dāng)執(zhí)行
- thisValue:設(shè)置this指向
返回值: 返回?cái)?shù)組中第一次通過(guò)測(cè)試的元素的索引泽腮。沒(méi)有返回-1
實(shí)例:
var arr = [1,2,3]
console.log(arr.findIndex(function(x,index,arr){
return x > 2
}))//返回2
array.reduce()
定義:從左到右,將數(shù)組中的值進(jìn)行縮減到一個(gè)值
語(yǔ)法:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
- 參數(shù)function(total, currentValue, currentIndex, arr) 必須
- total 必須
- currenValue 必須
返回值:返回相減之后得到的值
實(shí)例:
var numbers = [175, 50, 25];
console.log(numbers.reduce(function(a,b){
return a - b
})
//打印 100
array.some()
定義:檢測(cè)數(shù)組中的一些元素是否通過(guò)測(cè)試
語(yǔ)法:
array.some(function(currentValue, index, arr), thisValue)
- function:是一個(gè)函數(shù)
- 當(dāng)執(zhí)行
some()
方法的時(shí)候衣赶,每個(gè)數(shù)組元素都會(huì)調(diào)用一次函數(shù)參數(shù) - 在調(diào)用函數(shù)的時(shí)候诊赊,可以傳入以下參數(shù):
- currentValue:數(shù)組中的每一個(gè)元素
- index:表示數(shù)組的索引
- arr:表示當(dāng)前數(shù)組
- 當(dāng)執(zhí)行
- thisValue:設(shè)置this指向
返回值: true 或者 false
實(shí)例:
var arr = [1,2,3]
console.log(arr.some(function(x,index,arr){
return x > 2
}))//返回 true