在平時(shí)的開發(fā)中我們經(jīng)常會(huì)用的數(shù)組的內(nèi)置方法,也是面試最常問(wèn)到的東西。數(shù)組是js中最常用到的數(shù)據(jù)集合,其內(nèi)置的方法有很多,熟練掌握這些方法,可以有效的提高我們的工作效率,同時(shí)對(duì)我們的代碼質(zhì)量也是有很大影響。
創(chuàng)新互聯(lián)秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站建設(shè)、做網(wǎng)站,小程序制作,網(wǎng)頁(yè)設(shè)計(jì)制作,手機(jī)網(wǎng)站制作,營(yíng)銷型網(wǎng)站幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長(zhǎng)。
let arr = [] // 創(chuàng)建一個(gè)空數(shù)組
let arr1 = [1, 2] // 創(chuàng)建一個(gè)包含兩項(xiàng)數(shù)據(jù)的數(shù)組
let arr = new Array() // 創(chuàng)建一個(gè)空數(shù)組
如果只傳一個(gè)數(shù)值參數(shù),則表示創(chuàng)建一個(gè)初始長(zhǎng)度為指定數(shù)值的空數(shù)組
let arr = new Array(5) // 創(chuàng)建一個(gè)數(shù)組長(zhǎng)度為5的空數(shù)組
如果傳入一個(gè)非數(shù)值的參數(shù)或者參數(shù)個(gè)數(shù)大于 1,則表示創(chuàng)建一個(gè)包含指定元素的數(shù)組
let arr = new Array(1,2,3) // 創(chuàng)建一個(gè)包含3個(gè)數(shù)值的數(shù)組
數(shù)組原型方法主要有以下這些:
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.join()
console.log(arr1) // 1,2,3,4,5
console.log(arr.join('-')) // 1-2-3-4-5
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.push(6, 7)
console.log(arr1) // 7
console.log(arr) // [1, 2, 3, 4, 5, 6, 7]
let arr = [1, 2, 3, 4, 5]
let arr2 = arr.pop()
console.log(arr2); // 5
console.log(arr); // [1, 2, 3, 4]
let arr = [1, 2, 3, 4, 5]
let arr2 = arr.shift()
console.log(arr2) // 1
console.log(arr) // [2,3,4,5]
let arr = [1, 2, 3, 4, 5]
let arr2 = arr.unshift(0)
console.log(arr2) // 6
console.log(arr) // [0,1,2,3,4,5]
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.slice(1)
console.log(arr1) //[2, 3, 4, 5]
let arr2 = arr.slice(1,3)
console.log(arr2) // [2, 3]
let arr3 = arr.slice(1, -2)
console.log(arr3) // [2, 3]
console.log(arr) // [1, 2, 3, 4, 5]
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.splice(0, 2, 6, 7);
console.log(arr) // [6, 7, 3, 4, 5]
console.log(arr1) // [1, 2]
let arr = [1, 2, 3, 4, 5]
let arr1 = arr.fill(6);
console.log(arr1) // [6, 6, 6, 6, 6]
console.log(arr) // [6, 6, 6, 6, 6]
let arr2 = arr.fill(6, 1, 2);
console.log(arr2) // [1, 6, 3, 4, 5]
let arr = [1, 2, 3, 4, 5]
let arr2 = arr.filter(function(item, index) {
return index % 3 === 0 || item >= 4;
})
console.log(arr2); //[1, 4, 5]
let arr = [1, 2, 3, 4, 5]
let arr1 = ['a', 'b', 'c', 'd']
let arr3= arr.concat(6,arr1)
console.log(arr) // [1, 2, 3, 4, 5]
console.log(arr1) // ['a', 'b', 'c', 'd']
console.log(arr3) // [1, 2, 3, 4, 5, 6, 'a', 'b', 'c', 'd']
可以看到第一個(gè)參數(shù)不是數(shù)組,但concat方法還是把它拼接到了arr數(shù)組的后面
10. indexOf(item,start)和lastIndexOf(item,start)
item 查找的元素
start 可選的整數(shù)參數(shù)。開始檢索的位置。如省略該參數(shù),則將從字符串的首字符開始檢索。
item 查找的元素
start 可選的整數(shù)參數(shù)。開始檢索的位置。如省略該參數(shù),則將從字符串的最后一個(gè)字符處開始檢索。
let arr = [1, 2, 3, 4, 5, 6, 3]
console.log(arr.indexOf(3)) // 2
console.log(arr.lastIndexOf(3)) // 6
console.log(arr.indexOf(3, 2)) // 2
console.log(arr.lastIndexOf(3,4)) // 2
console.log(arr.indexOf("3")) // -1
let arr = [1, 2, 3, 4, 5, 6, 10, 11]
let arr2 = arr.every(function(x) {
return x < 10;
})
console.log(arr2); // false
let arr3 = arr.every(function(x) {
return x < 20;
})
console.log(arr3); // true
let arr = [1, 2, 3, 4, 5, 6, 10, 11]
let arr2 = arr.some(function(x) {
return x < 10
});
console.log(arr2); // true
let arr3 = arr.some(function(x) {
return x > 20
});
console.log(arr3); // false
let arr = [1, 2, 3, 4, 5, 6, 10, 11]
let arr1 = arr.includes(31);
console.log(arr1); // false
let arr2 = arr.includes(6, 3)
console.log(arr2); // true
let arr1 = ["a", "d", "c", "b"];
console.log(arr1.sort()); // ["a", "b", "c", "d"]
let arr2 = [13, 24, 51, 3];
console.log(arr2.sort()); // [13, 24, 3, 51]
console.log(arr2); // [13, 24, 3, 51](原數(shù)組被改變)
array.sort(compareFunction)可以通過(guò)提供“比較函數(shù)”來(lái)排序,該函數(shù)應(yīng)返回負(fù)值、零值或正值,具體取決于參數(shù),例如:
function(a, b){return a-b}
如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之前則返回一個(gè)負(fù)數(shù),如果兩個(gè)參數(shù)相等則返回 0,如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)之后則返回一個(gè)正數(shù)。
15. reverse()
用于顛倒數(shù)組中元素的順序
let arr = [13, 24, 51, 3];
console.log(arr.reverse()); //[3, 51, 24, 13]
console.log(arr); //[3, 51, 24, 13](原數(shù)組改變)
function(currentValue, index, arr) 必需。為數(shù)組中的每個(gè)元素運(yùn)行的函數(shù)。
let arr = [1, 2, 3, 4]
arr.forEach((item,index,ar) => {
console.log(item + '|' + index + '|' + (ar === arr))
})
1|0|true
2|1|true
3|2|true
4|3|true
let arr = [1, 2, 3, 4, 5, 6, 10, 11]
let arr2 = arr.map(function(item){
return item + 1
});
console.log(arr2) // [2, 3, 4, 5, 6, 7, 11, 12]
console.log(arr) // [1, 2, 3, 4, 5, 6, 10, 11]
let arr = [1, 2, 3, 4, 5, 6, 10, 11]
arr.copyWithin(1, 2, 3);
console.log(arr) // [1, 3, 3, 4, 5, 6, 10, 11]
let arr = [1, 2, 3, 4, 5, 6, 10, 11]
let a = arr.find((value, keys, arr) => {
return value > 2;
})
console.log(a) // 3 返回匹配的值
let b = arr.findIndex((value, keys, arr) => {
return value > 2;
})
console.log(b) // 2 返回匹配位置的索引
find()和findIndex()方法都會(huì)在回調(diào)函數(shù)第一次查找結(jié)果為true時(shí)停止查找并返回第一個(gè)匹配的值
20. toLocaleString()和toString()講數(shù)組轉(zhuǎn)換為字符串
let arr = [1, 2, 3, 4, 5, 6, 10, 11]
const str = arr.toLocaleString();
const str1 = arr.toString()
console.log(str); // 1,2,3,4,5,6,10,11
console.log(str1); // 1,2,3,4,5,6,10,11
let arr = [0, 1, 2, [3, 4]]
let arr1 = arr.flat()
console.log(arr) // [0, 1, 2, [3, 4]]
console.log(arr1) // [0, 1, 2, 3, 4]
let arr2 = [0, 1, 2, [[[3, 4]]]]
let arr3 = arr2.flat(2)
console.log(arr3) // [0, 1, 2, [3, 4]]
let arr4 = arr2.flat(Infinity)
console.log(arr4)// [0, 1, 2, 3, 4]
// 如果原數(shù)組有空項(xiàng),flat()方法會(huì)跳過(guò)空項(xiàng)
let arr5 = [1, 2, , 4, 5];
let arr6 = arr5.flat();
console.log(arr6) // [1, 2, 4, 5]
flatMap()對(duì)數(shù)組的每個(gè)成員執(zhí)行函數(shù),相當(dāng)于執(zhí)行Array.prototype.map(),然后對(duì)返回值組成的數(shù)組執(zhí)行flat()方法。
// 相當(dāng)于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]
let arr = ['a', 'b', 'c', 'd']
for (let index of arr.keys()) {
console.log(index)
}
// 0
// 1
// 2
// 3
for (let item of arr.values()) {
console.log(item)
}
// a
// b
// c
// d
for (let [index, item] of arr.entries()) {
console.log(index, item)
}
// 0 "a"
// 1 "b"
// 3 "c"
// 4 "d"
或者手動(dòng)調(diào)用遍歷器對(duì)象的next方法,進(jìn)行遍歷
let arr = ['a', 'b', 'c', 'd']
let item = arr.entries()
console.log(item.next().value) // [0, a ]
console.log(item.next().value) // [1, b ]
console.log(item.next().value) // [2, c ]
console.log(item.next().value) // [3, d ]
console.log(item.next().value) // undefined