數(shù)組是一種基礎的JavaScript對象。ES6標準繼續(xù)改進數(shù)組,添加了很多功能眷蜓。
一故俐、 創(chuàng)建數(shù)組
在es6以前想鹰,創(chuàng)建數(shù)組的方式主要有兩種。
第一種是調用Array構造函數(shù)药版,另一種是用數(shù)組字面量語法辑舷。這兩種方法均需要列舉數(shù)組中的元素。
為了進一步簡化JavaScript組的創(chuàng)建過程槽片,es6增加了Array.of()和Array.from()兩個方法何缓。
1肢础、Array.of()方法
用這個方法創(chuàng)建數(shù)組,只需要傳入你希望在數(shù)組中包含的值碌廓。返回參數(shù)值組成的數(shù)組
Array.of(1, 2) // [1, 2]
2传轰、Array.from()方法。
由于js不支持直接將非數(shù)組對象轉化為真實數(shù)組谷婆。Arguments就是一種類數(shù)組對象慨蛙。如果要把它當做數(shù)組使用,則必須先轉換該對象的類型纪挎。
數(shù)組的原生slice()方法可以將非數(shù)組對象轉換為數(shù)組
function makeArray(arrayLike){
return Array. prototype.slice.call(arrayLike)
}
var arr = makeArray(arguments)
Array.from()方法可以接受可迭代對象或類數(shù)組對象作為第一個參數(shù)期贫,最終返回一個數(shù)組;第二個參數(shù)异袄,作用類似于數(shù)組的map方法通砍,用來對每個元素進行處理,將處理后的值放入返回的數(shù)組烤蜕。封孙。
Array.from(arrayLike, x => x * x);
// 等同于
Array.from(arrayLike).map(x => x * x);
Array.from([1, 2, 3], (x) => x * x)
// [1, 4, 9]
3、與以前創(chuàng)建數(shù)組的方法比較
//參數(shù)只有一個時
Array.of(3) // [3]
Array(3) // [, , ,]
//參數(shù)多余1個時
Array.of(1,2,3) // [1,2,3]
Array(1,2,3) // [1,2,3]
只有當參數(shù)個數(shù)不少于 2 個時玖绿,Array()才會返回由參數(shù)組成的新數(shù)組敛瓷。參數(shù)個數(shù)只有一個時,實際上是指定數(shù)組的長度斑匪。
Array.of方法用于將一組值呐籽,轉換為數(shù)組。
二蚀瘸、所有數(shù)組添加的新方法:
1狡蝶、find()和findIndex() 用于數(shù)組中查找特定的值
接受兩個參數(shù):回調函數(shù)(回調函數(shù)的參數(shù)為item,index贮勃,array)贪惹;可選參數(shù)(用于指定回調函數(shù)中的this的值)
區(qū)別:
- find()返回查找到的值
- findIndex()返回查找到值的索引
使用場景:
- 根據(jù)某個條件查找匹配的元素,用find()和findIndex()
- 指向查找某個值匹配的元素寂嘉,indexOf()和lastIndexOf()
2奏瞬、fill()方法
fill()方法用指定的值填充一直多個數(shù)組元素。當傳入一個值時泉孩,fill()方法會用這個值重寫數(shù)組中的所有值硼端。第二個和第三個參數(shù),用于指定填充的起始位置和結束位置
['a', 'b', 'c'].fill(7)
// [7, 7, 7]
['a', 'b', 'c'].fill(7, 1, 2)
// ['a', 7, 'c']
3寓搬、copyWithin()
copyWithin()與fill()方法類似珍昨,同時改變數(shù)組中多個元素。
區(qū)別:fill()方法是將數(shù)組元素賦值為一個指定的值,而copyWithin()方法是從數(shù)組中復制元素的值镣典。
使用這個方法兔毙,會修改當前數(shù)組。
它接受三個參數(shù)兄春。
target(必需):從該位置開始替換數(shù)據(jù)澎剥。如果為負值,表示倒數(shù)赶舆。
start(可選):從該位置開始讀取數(shù)據(jù)肴裙,默認為 0。如果為負值涌乳,表示從末尾開始計算。
end(可選):到該位置前停止讀取數(shù)據(jù)甜癞,默認等于數(shù)組長度夕晓。如果為負值,表示從末尾開始計算悠咱。
// -2相當于3號位蒸辆,-1相當于4號位
[1, 2, 3, 4, 5].copyWithin(0, -2, -1)
// [4, 2, 3, 4, 5]
copyWithin()與fill()方法的用途在定型數(shù)組中常用