除了Object類型以外,Array類型恐怕是js中最經常使用的類型了,而且隨着js的發展進步,數組中提供的方法也愈來愈來,對數組的處理也出現了各類騷操做,此篇文章將會帶你從新學習數組中的實例方法前端
參數:分隔符字符串數組
const arr = [1, 2, 3] console.log(arr.join('|')) // '1|2|3'
參數:無函數
const arr = [1, 2, 3] console.log(arr.toString()) // '1,2,3'
參數: item...(多個數組項)學習
let arr = ['a', 'b', 'c'] const count = arr.push('d') console.log(count) // 4 console.log(arr) // [ 'a', 'b', 'c', 'd' ]
參數:無this
let arr = ['a', 'b', 'c'] const item = arr.pop() console.log(item) // 'c' console.log(arr) // [ 'a', 'b' ]
參數:無code
let arr = ['a', 'b', 'c'] const item = arr.shift() console.log(item) // 'a' console.log(arr) // [ 'b', 'c' ]
參數:item...(多個數組項)對象
let arr = ['a', 'b', 'c'] const count = arr.unshift('d', 'e') console.log(count) // 5 console.log(arr) // [ 'd', 'e', 'a', 'b', 'c' ]
參數:無排序
let arr = ['a', 'b', 'c'] console.log(arr.reverse()) // [ 'c', 'b', 'a' ]
參數:compareFunction(可選)遞歸
- 若不傳compareFunction,sort()方法回調用每一個數組項的toString()方法,而後比較獲得的字符串 ```js let arr = [2, 3, 10] arr.sort() console.log(arr) // [ 10, 2, 3 ] ``` '10'位於'2'以前 - 若傳compareFunction(a,b),若是返回值小於0,則a位於b以前,若是返回值等於0則位置不變,若是返回值大於,則b位於a以前 ```js let arr = [2, 5, 3, 1] arr.sort((a, b) => { if (a < b) { return -1 } else if (a > b) { return 1 } else { return 0 } }) console.log(arr) // [ 1, 2, 3, 5 ] ```
參數:item...(能夠是數組項,也能夠是數組)索引
let arr = [1, 2, 3] let newArr = arr.concat(4, 5, [6, 7]) console.log(newArr) // [ 1, 2, 3, 4, 5, 6, 7 ]
參數: start(起始位置),end(結束位置,可選)
let arr = [1, 2, 3, 4] let newArr = arr.slice(1, 3) console.log(newArr) // [ 2, 3 ]
tip: 若是slice方法的參數中有一個負數,則用數組長度加上該數來肯定相應的位置
三、splice()方法用法有多種,根據不一樣的用法須要傳遞的參數也不同
let arr = [1, 2, 3, 4, 5] arr.splice(0, 1) console.log(arr) // [ 2, 3, 4, 5 ] arr.splice(1, 0, 'hello', 'world') console.log(arr) // [ 2, 'hello', 'world', 3, 4, 5 ] arr.splice(3, 1, 'js') console.log(arr) // [ 2, 'hello', 'world', 'js', 4, 5 ]
參數:item(要查找的數組項),index(指定開始查找的位置,可選)
let arr = [1, 2, 3, 4, 5] console.log(arr.indexOf(3)) // 2 console.log(arr.indexOf(3, 3)) // -1
一、every()方法對數組中每一項運行給定函數,若是該函數對每一項都返回true,則返回true
參數:callback(item, index, arr)
let arr = [3, 4, 5, 6] let result = arr.every((item) => item > 2) console.log(result) // true
參數:callback(item, index, arr)
let arr = [1, 2, 3, 4] let result = arr.some((item) => item > 3) console.log(result) // true
參數:callback(item, index, arr)
let arr = [1, 2, 3] let result = arr.map(item => item * 2) console.log(result) // [ 2, 4, 6 ]
參數:callback(item, index, arr)
let arr = [1, 2, 3, 4, 5] let result = arr.filter(item => item > 2) console.log(result) // [3, 4, 5]
參數:callback(item, index, arr)
let arr = [1, 2, 3, 4, 5] arr.forEach(item => { console.log(item) // 1 2 3 4 5 })
tip: 修改item的不會影響遍歷的數組項
參數:callback(accumulator(累計器累計回調的返回值),currentValue(數組中正在處理的元素),currentIndex(數組中正在處理的元素的索引,若是提供了initialValue,則起始索引號爲0,不然爲1,可選),array(調用reducer的數組)), initialValue(做爲第一次調用callback函數時的第一個參數的值。 若是沒有提供初始值,則將使用數組中的第一個元素。 在沒有初始值的空數組上調用 reduce 將報錯,可選)
let arr = [1, 2, 3, 4, 5] let result = arr.reduce((accumulator, current, index, array) => { return accumulator + current }) console.log(result) // 15 1+2+3+4+5
let arr = [1, 2, 3, 4, 5] let result = arr.reduce((accumulator, current, index, array) => { return accumulator + current }, 10) console.log(result) // 25 10+1+2+3+4+5
參數:arrayLike(想要轉換成數組的僞數組對象或可迭代對象),mapFn(若是指定了該參數,新組數中的每一個元素會執行此回調函數,可選),thisArg(執行回調函數時this對象,可選)
let arrayLike = { 0: 1, 1: 2, 2: 3, length: 3 } console.log(Array.from(arrayLike)) // [1, 2, 3]
let arrayLike = { 0: 1, 1: 2, 2: 3, length: 3 } console.log(Array.from(arrayLike, (item) => item * 2)) // [2, 4, 6]
在實際應用中更多應用於Dom操做返回的集合以及函數內部的arguments對象
參數:item...(任意個參數,將按順序返回數組中的元素)
let result = Array.of(2, 3, 4) console.log(result) // [ 2, 3, 4 ]
參數:target(從該位置開始替換數據),start(從該位置開始讀取數據,默認爲0,若是爲負值表示倒數,可選),end(到該位置前,中止讀取數據,默認爲數組長度,若是爲負值,表示倒數)
let arr = [1, 2, 3, 4, 5] arr.copyWithin(0, 3, 5) console.log(arr) // [ 4, 5, 3, 4, 5 ]
參數:callback(item, index, arr)
let arr = [1, 2, 3, 4, 5] let result = arr.find(item => item > 3) console.log(result) // 4
參數:value(填充數組元素的值),start(起始索引,可選),end(終止索引,可選)
let arr = [1, 2, 3, 4, 5] arr.fill(6, 2, 5) console.log(arr) // [ 1, 2, 6, 6, 6 ]
參數:無
let arr = ['a', 'b', 'c'] for (let idx of arr.keys()) { console.log(idx) // 0 1 2 } for (let item of arr.values()) { console.log(item) // 'a' 'b' 'c' } for (let [idx, item] of arr.entries()) { console.log(idx + '---' + item) // '0---a' '1---b' '2---c' }
參數:value(要查找的元素),start(開始查找的位置,可選)
let arr = ['a', 'b', 'c'] console.log(arr.includes('a')) // true console.log(arr.includes('d')) // false
參數:depth(要提取數組的嵌套結構深度,默認爲1,可選)
let arr = ['a', 'b', ['c', 'd']] let result = arr.flat() // ["a", "b", "c", "d"] let arr1 = ['a', ['b', ['c']]] //使用 Infinity 做爲深度,展開任意深度的嵌套數組 let result1 = arr1.flat(Infinity) // ["a", "b", "c"]
此篇文章記錄了JS中數組經常使用的方法,畢竟數組的實例方法有那麼多,好記性不如爛筆頭,寫下此篇文章加深記憶,同時但願對你們也能有所幫助。若是有錯誤或不嚴謹的地方,歡迎批評指正,若是喜歡,歡迎點贊