數(shù)組檢測
//通常情況
let boo = nums instanceof Array
console.log(boo); //true
//最終方法 Array.isArray()方法
let boo = Array.isArray(nums)
console.log(boo);
數(shù)組轉(zhuǎn)換
toString()
toLocalString()
join()
參數(shù)可指定分隔符
var arr = ['ga', 'er', 'rt']
let a = arr.toLocaleString()
console.log(a); //ga,er,rt
console.log(arr); //[ 'ga', 'er', 'rt' ]
var arr = ['ga', 'er', 'rt']
let a = arr.join('|')
console.log(a); //ga|er|rt
console.log(arr); //[ 'ga', 'er', 'rt' ]
添加芝加,移除方法
push()方法可以接收任意數(shù)量的參數(shù)骡尽,并把他們逐個(gè)添加到數(shù)組末尾孽椰,并返回修改后數(shù)組的長度
pop()方法則從數(shù)組末尾移除最后一項(xiàng),減少數(shù)組的length值,然后返回移除的項(xiàng)
shift()移除數(shù)據(jù)組中的第一個(gè)項(xiàng)并返回該項(xiàng)框杜,同時(shí)將數(shù)組長度減一
unshift() 在數(shù)組前端添加任意個(gè)項(xiàng)并返回新數(shù)組的長度
重排序方法
- reverse()方法可以反轉(zhuǎn)數(shù)組項(xiàng)的順序蝶押,注意該方法是直接在原始數(shù)組上進(jìn)行操作的踱蠢。
var nums = [1, 2, 3, 4]
nums.reverse()
console.log(nums); //[ 4, 3, 2, 1 ]
- sort()方法,在默認(rèn)情況下會按升序序列排列數(shù)組項(xiàng)——即最小的值位于最前面棋电,最大的值排在最后面茎截。不過這個(gè)升序的比較,比較的不是數(shù)值的大小赶盔,為了實(shí)現(xiàn)排序企锌,sort()方法會調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)型方法,然后比較得到的字符串于未,以確定該如何排序撕攒。即使數(shù)組中的每一項(xiàng)都是數(shù)值陡鹃,sort()方法比較的也是字符串。
var nums = [0,1,5,10,15]
nums.sort()
console.log(nums); // [ 0, 1, 10, 15, 5 ]
//參數(shù)為比較函數(shù)
var nums = [0,1,5,10,15]
nums.sort(compare)
console.log(nums); // [ 0, 1, 5, 10, 15 ]
function compare(a, b) {
return a -b
}
參考資料https://www.w3school.com.cn/jsref/jsref_sort.asp
操作方法
- concat(...value) 方法用于連接兩個(gè)或多個(gè)數(shù)組抖坪。
該方法不會改變現(xiàn)有的數(shù)組萍鲸,而僅僅會返回被連接數(shù)組的一個(gè)副本。
//參數(shù):可以是具體的值擦俐,也可以是數(shù)組對象脊阴。可以是任意多個(gè)
//返回值:返回一個(gè)新的數(shù)組蚯瞧。該數(shù)組是通過把所有 arrayX 參數(shù)添加到 arrayObject 中生成的嘿期。如果要進(jìn)行 concat() 操作的參數(shù)是數(shù)組,那么添加的是數(shù)組中的元素埋合,而不是數(shù)組
var nums = [0]
let a = nums.concat(1, 2)
console.log(a); //[ 0, 1, 2 ]
var nums = [0]
var num1 = [1, 2]
var num2 = [3, 4]
let a = nums.concat(num1, num2)
console.log(a); //[ 0, 1, 2, 3, 4 ]
- slice() 方法可從已有的數(shù)組中返回選定的元素秽五。
slice()方法可提取字符串的某個(gè)部分,并以新的字符串返回被提取的部分饥悴。
注意: slice() 方法不會改變原始數(shù)組坦喘。
參數(shù):
start:必需。規(guī)定從何處開始選取西设。如果是負(fù)數(shù)瓣铣,那么它規(guī)定從數(shù)組尾部開始算起的位置。也就是說贷揽,-1 指最后一個(gè)元素棠笑,-2 指倒數(shù)第二個(gè)元素,以此類推禽绪。
end:可選蓖救。規(guī)定從何處結(jié)束選取。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)印屁。如果沒有指定該參數(shù)循捺,那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù)雄人,那么它規(guī)定的是從數(shù)組尾部開始算起的元素从橘。
返回值:返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素础钠。
var nums = [0, 1, 2, 3]
let a = nums.slice(1, 3)
console.log(a); //[ 1, 2 ]
- splice() 方法用于插入恰力、刪除或替換數(shù)組的元素。
注意:這種方法會改變原始數(shù)組旗吁!踩萎。
array.splice(index,howmany,item1,.....,itemX)
參數(shù):
index 必需。規(guī)定從何處添加/刪除元素很钓。該參數(shù)是開始插入和(或)刪除的數(shù)組元素的下標(biāo)香府,必須是數(shù)字翻具。
howmany 必需。規(guī)定應(yīng)該刪除多少元素回还。必須是數(shù)字裆泳,但可以是 "0"。如果未規(guī)定此參數(shù)柠硕,則刪除從 index 開始到原數(shù)組結(jié)尾的所有元素工禾。
item1, ..., itemX 可選。要添加到數(shù)組的新元素
返回值:type(Array) 如果從 arrayObject 中刪除了元素蝗柔,則返回的是含有被刪除的元素的數(shù)組闻葵。
//插入
var arr = [1, 2, 3]
let a = arr.splice(1, 0, 4, 5)
console.log(a); //[]
console.log(arr); //[ 1, 4, 5, 2, 3 ]
//刪除
var arr = [1, 2, 3, 4, 5]
let a = arr.splice(1, 2)
console.log(a) //[]
console.log(arr); //[ 1, 4, 5 ]
//替換
var arr = [1, 2, 3]
let a = arr.splice(1, 1, 4, 5)
console.log(a); //[2]
console.log(arr); //[ 1, 4, 5, 3 ] 4,5替換了2
位置方法
- indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置癣丧。
array.indexOf(item,start)
參數(shù):
item 必須槽畔。查找的元素。
start 可選的整數(shù)參數(shù)胁编。規(guī)定在字符串中開始檢索的位置厢钧。它的合法取值是 0 到 stringObject.length - 1。如省略該參數(shù)嬉橙,則將 從字符串的首字符開始檢索早直。
返回值:Number
元素在數(shù)組中的位置,如果沒與搜索到則返回 -1
var arr = [1, 2, 3, 4]
let i = arr.indexOf(2, 0)
console.log(i); //1
- lastIndexOf() 方法可返回一個(gè)指定的字符串值最后出現(xiàn)的位置,在一個(gè)字符串中的指定位置從后向前搜索市框。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.lastIndexOf(2)
console.log(i); //4 最后一次出現(xiàn)是索引為4時(shí)
迭代方法
- every()
array.every(function(currentValue,index,arr), thisValue)
every() 方法用于檢測數(shù)組所有元素是否都符合指定條件(通過函數(shù)提供)霞扬。
every() 方法使用指定函數(shù)檢測數(shù)組中的所有元素:
如果數(shù)組中檢測到有一個(gè)元素不滿足,則整個(gè)表達(dá)式返回 false 枫振,且剩余的元素不會再進(jìn)行檢測喻圃。
如果所有元素都滿足條件,則返回 true粪滤。
注意: every() 不會對空數(shù)組進(jìn)行檢測斧拍。
注意: every() 不會改變原始數(shù)組。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.every(function (item, index, arr) {
return item < 7
})
console.log(i); //true
- some()
some() 方法用于檢測數(shù)組中的元素是否滿足指定條件(函數(shù)提供)额衙。
some() 方法會依次執(zhí)行數(shù)組的每個(gè)元素:
如果有一個(gè)元素滿足條件饮焦,則表達(dá)式返回true , 剩余的元素不會再執(zhí)行檢測怕吴。
如果沒有滿足條件的元素窍侧,則返回false。
注意: some() 不會對空數(shù)組進(jìn)行檢測转绷。
注意: some() 不會改變原始數(shù)組伟件。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.some(function (item, index, arr) {
return item < 7
})
console.log(i); //true 數(shù)組中有小于7的數(shù)
- filter()
filter() 方法創(chuàng)建一個(gè)新的數(shù)組,新數(shù)組中的元素是通過檢查指定數(shù)組中符合條件的所有元素议经。
注意: filter() 不會對空數(shù)組進(jìn)行檢測斧账。
注意: filter() 不會改變原始數(shù)組谴返。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.filter(function (item, index, arr) {
return item < 3
})
console.log(i); //[ 1, 2, 2 ]
console.log(arr); //[ 1, 2, 3, 4, 2, 6 ]
- map()
map() 方法返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值咧织。
map() 方法按照原始數(shù)組元素順序依次處理元素嗓袱。
注意: map() 不會對空數(shù)組進(jìn)行檢測。
注意: map() 不會改變原始數(shù)組习绢。
var arr = [1, 2, 3, 4, 2, 6]
let i = arr.map(function (item, index, arr) {
return item * 3
})
console.log(i); //[ 3, 6, 9, 12, 6, 18 ]
console.log(arr); //[ 1, 2, 3, 4, 2, 6 ]
- forEach()
forEach() 方法用于調(diào)用數(shù)組的每個(gè)元素渠抹,并將元素傳遞給回調(diào)函數(shù)。
注意: forEach() 對于空數(shù)組是不會執(zhí)行回調(diào)函數(shù)的闪萄。
var arr = [1, 2, 3, 4, 2, 6]
arr.forEach(function () {
// 具體操作
})
//和for循環(huán)類似
fill()
fill() 方法用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素梧却。不包括終止索引。
fill 方法接受三個(gè)參數(shù) value败去,start 以及 end放航,start 和 end 參數(shù)是可選的,其默認(rèn)值分別為 0 和 this 對象的 length 屬性值圆裕。
var arr = [1, 2, 3, 4, 5]
let a = arr.fill(4, 2, 3) //用4替換索引2-3的元素
console.log(a); //[ 1, 2, 4, 4, 5 ]
console.log(arr); //[ 1, 2, 4, 4, 5 ]