ES6中新增的數(shù)組知識(shí)
- JSON數(shù)組格式轉(zhuǎn)換
JSON的數(shù)組格式就是為了前端快速的把JSON轉(zhuǎn)換成數(shù)組的一種格式
Array.from()
let json = {
'0': 'hello',
'1': 'world',
'2': '????',
length:3
}
這就是一個(gè)標(biāo)準(zhǔn)的JSON數(shù)組格式,跟普通的JSON對(duì)比是在最后多了一個(gè)length屬性。只要是這種特殊的json格式都可以輕松使用ES6的語(yǔ)法轉(zhuǎn)變成數(shù)組。在ES6中絕大部分的Array操作都存在于Array對(duì)象里。我們就用Array.from(xxx)來(lái)進(jìn)行轉(zhuǎn)換。
let json = {
'0': 'hello',
'1': 'world',
'2': '????',
length:3
}
let arr=Array.from(json);
console.log(arr)
//["hello", "world", "????"]
實(shí)際開(kāi)發(fā)中這種方法還是比較常用的,畢竟節(jié)省了我們代碼行數(shù),也讓我們的程序更清晰。
- Array.of()方法
它負(fù)責(zé)把一堆文本或者變量轉(zhuǎn)換成數(shù)組。在開(kāi)發(fā)中我們經(jīng)常拿到了一個(gè)類(lèi)似數(shù)組的字符串,需要使用eval來(lái)進(jìn)行轉(zhuǎn)換,如果你一個(gè)老手程序員都知道eval的效率是很低的,它會(huì)拖慢我們的程序。這時(shí)候我們就可以使用Array.of方法。我們看下邊的代碼把一堆數(shù)字轉(zhuǎn)換成數(shù)組并打印在控制臺(tái)上:
let arr =Array.of(3,4,5,6);
console.log(arr);
//[3, 4, 5, 6]
let arr =Array.of('hello','world');
console.log(arr);
//["hello", "world"]
- find( )實(shí)例方法
所謂的實(shí)例方法就是并不是以Array對(duì)象開(kāi)始的,而是必須有一個(gè)已經(jīng)存在的數(shù)組,然后使用的方法,這就是實(shí)例方法(不理解請(qǐng)看下邊的代碼,再和上邊的代碼進(jìn)行比對(duì),你會(huì)有所頓悟)。這里的find方法是從數(shù)組中查找。在find方法中我們需要傳入一個(gè)匿名函數(shù),函數(shù)需要傳入三個(gè)參數(shù):
1.value:表示當(dāng)前查找的值。
2.index:表示當(dāng)前查找的數(shù)組索引。
3.arr:表示當(dāng)前數(shù)組。
在函數(shù)中如果找到符合條件的數(shù)組元素就進(jìn)行return,并停止查找。
let arr=[1,2,3,4,5,6,7,8,9];
console.log(arr.find(function(value,index,arr){
return value > 5;
}))
//6
- 數(shù)組的遍歷
- for…of循環(huán):
這種形式比ES5的for循環(huán)要簡(jiǎn)單而且高效。
let arr=['hello','world']
for (let item of arr){
console.log(item);
}
//hello
//world
for…of數(shù)組索引:有時(shí)候開(kāi)發(fā)中是需要數(shù)組的索引的,那我們可以使用下面的代碼輸出數(shù)組索引。
let arr=['hello','world']
for (let index of arr.keys()){
console.log(index);
}
//0
//1
同時(shí)輸出數(shù)組的內(nèi)容和索引:我們用entries()這個(gè)實(shí)例方法,配合我們的for…of循環(huán)就可以同時(shí)輸出內(nèi)容和索引了。
let arr=['hello','world']
for (let [index,val] of arr.entries()){
console.log(index+':'+val);
}
//0:hello
//1:world
2.entries( )實(shí)例方法:
entries()實(shí)例方式生成的是Iterator形式的數(shù)組,那這種形式的好處就是可以讓我們?cè)谛枰獣r(shí)用next()手動(dòng)跳轉(zhuǎn)到下一個(gè)值??梢钥刂戚敵?輸出key和value組成的數(shù)組
let arr=['hello','world']
let list=arr.entries();
console.log(list.next().value);
console.log(list.next().value);
//[0, "hello"]
//[1, "world"]