一、創(chuàng)建數(shù)組
1勺三、構造函數(shù)
const arr = new Array(1,2,3); // [1,2,3]
const arr = new Array(2); // [empty, empty]
const arr = new Array("2"); // ["2"]
// 參數(shù)的不同,結果不同需曾,ES6提供Array.of進行彌補
2吗坚、字面量
const arr = [1,2,3,4]
3、Array.from()
ES6新增
const arrayLike = { '0': 'a', length: 1};
const arr = Array.from(arrayLike);
// 類數(shù)組轉數(shù)組
4呆万、Array.of()
ES6新增
Array.of(3, 11, 8); //[3,11,8]
Array.of(3); // [3]
// 彌補構造函數(shù)的行為差異
數(shù)組方法比較多商源,有些方法也不常用,可能會過一段時間就會忘記谋减,我整理了32個數(shù)組的方法牡彻,方便自己
二、數(shù)組方法(ES5之前)(12個)
方法名 | 功能 | 返回值 | 原數(shù)組是否改變 |
---|---|---|---|
concat() | 合并數(shù)組 | 合并之后的數(shù)據(jù) | N |
join() | 使用分隔符出爹,將數(shù)組轉為字符串 | 轉換后的字符串 | N |
push() | 在最后一位新增一或多個數(shù)據(jù) | 長度 | Y |
pop() | 刪除最后一位 | 刪除的數(shù)據(jù) | Y |
unshift() | 在第一位新增一或多個數(shù)據(jù) | 長度 | Y |
shift() | 刪除第一位 | 刪除的數(shù)據(jù) | Y |
reverse() | 反轉數(shù)組 | 反轉后的數(shù)組 | Y |
slice() | 截取指定位置的數(shù)組 | 截取的數(shù)組 | N |
sort() | 排序(字符規(guī)則) | 排序后的數(shù)組 | Y |
splice() | 刪除指定位置庄吼,并替換 | 刪除的數(shù)據(jù) | Y |
toString() | 直接轉為字符串 | 轉成的字符串 | N |
valueOf() | 返回數(shù)組對象的原始值 | 數(shù)組對象的原始值 | N |
三、數(shù)組方法(ES5)(10個)
方法名 | 功能 | 返回值 | 原數(shù)組是否改變 |
---|---|---|---|
indexOf() | 查詢并返回數(shù)據(jù)的索引 | 查到數(shù)據(jù)的索引 | N |
lastIndexOf() | 反向查詢并返回數(shù)據(jù)的索引 | 查到數(shù)據(jù)的索引 | N |
forEach() | 遍歷以政,每項都執(zhí)行一次回調函數(shù) | / | N |
map() | 映射霸褒,回調函數(shù)處理每項 | 每次的結果組成的數(shù)組 | N |
filter() | 過濾,回調函數(shù)檢測每項 | 檢測為true的元素組成的數(shù)組 | N |
every() | 判斷盈蛮,每項都是否滿足條件 | 都滿足,返回true | N |
some() | 判斷技矮,是否存在滿足條件的項 | 一項滿足抖誉,返回true | N |
reduce() | 歸并殊轴,迭代數(shù)組的所有項 | 歸并的最終值 | N |
reduceRight() | 反向歸并,反向迭代數(shù)組的所有項 | 歸并的最終值 | N |
Tips1
ES5中提供的forEach袒炉、map旁理、filter、every我磁、some5個遍歷方法都使用一個回調函數(shù)參數(shù)來執(zhí)行孽文,其實它們是可以傳兩個參數(shù)
array.forEach(function(value, index, slef){
console.log(this);
}, obj);
// 回調函數(shù)里的this指向第二個參數(shù)obj
// 回調函數(shù)三個參數(shù):當前值、當前索引夺艰、整個數(shù)組
方法名 | 功能 | 返回值 | 原數(shù)組是否改變 |
---|---|---|---|
Array.isArray() | 判斷提供的對象是否是數(shù)組 | 布爾值 | N |
四芋哭、數(shù)組方法(ES6)(10個)
方法名 | 功能 | 返回值 | 原數(shù)組是否改變 |
---|---|---|---|
copyWithin() | 在當前數(shù)組,將指定位置的成員復制到其他位置 | 改變后的數(shù)組 | Y |
find() | 查詢郁副,第一個符合條件的數(shù)組項 | 查到的數(shù)組項 | N |
findIndex() | 查詢减牺,第一個符合條件的數(shù)組項索引 | 查到的數(shù)組項索引 | N |
fill() | 填充,以定值填充數(shù)組 | 改變后的數(shù)組 | Y |
entries() | 對鍵值對的遍歷 | 包含鍵值對的遍歷器對象 | N |
keys() | 對鍵名的遍歷 | 包含鍵名的遍歷器對象 | N |
values() | 對鍵值的遍歷 | 包含鍵值的遍歷器對象 | N |
includes() | 判斷存谎,數(shù)組是否包含給定的值 | 布爾值 | N |
flat() | 把多維數(shù)組拉平 | 拉平的數(shù)組 | N |
flatMap() | 先執(zhí)行一個map操作拔疚,再進行flat | 拉平的數(shù)組 | N |
Tips2
ES6中提供的find、findIndex可以傳兩個參數(shù)既荚,第二個參數(shù)綁定this
array.find(function(value, index, slef){
console.log(this);
}, obj);
// 回調函數(shù)里的this指向第二個參數(shù)obj
// 回調函數(shù)三個參數(shù):當前值稚失、當前索引、整個數(shù)組