1. 程式人生 > >es6中新增的陣列的知識

es6中新增的陣列的知識

JSON陣列格式轉換

JSON的陣列格式就是為了前端快速的把JSON轉換成陣列的一種格式,我們先來看一下JSON的陣列格式怎麼寫

let json = {
	'0':'leiy',
	'1':'leiyy',
	'2':'leiyyy',
	length:3
}

這就是一個標準的JSON陣列格式,跟普通的JSON對比是在最後多了一個length屬性。只要是這種特殊的json格式都可以輕鬆使用ES6的語法轉變成陣列。在ES6中絕大部分的Array操作都存在於Array物件裡。我們就用Array.from(xxx)來進行轉換。我們把上邊的JSON程式碼轉換成陣列,並列印在控制檯。

let arr=Array.from(json)
console.log(arr);

列印結果:

[ 'leiy', 'leiyy', 'leiyyy' ]

實際開發中這種方法還是比較常用的,畢竟節省了我們程式碼行數,也讓我們的程式更清晰。

Array.of()方法:

它負責把一堆文字或者變數轉換成陣列。在開發中我們經常拿到了一個類似陣列的字串,需要使用eval來進行轉換,如果你一個老手程式設計師都知道eval的效率是很低的,它會拖慢我們的程式。這時候我們就可以使用Array.of方法。我們看下邊的程式碼把一堆數字轉換成陣列並列印在控制檯上:

let arr1=Array.of(3,6,7,8,9)
console.log(arr1);

列印結果:

[ 3, 6, 7, 8, 9 ]

當然它不僅可以轉換數字,字串也是可以轉換的

find( )例項方法:

所謂的例項方法就是並不是以Array物件開始的,而是必須有一個已經存在的陣列,然後使用的方法,這就是例項方法(不理解請看下邊的程式碼,再和上邊的程式碼進行比對,你會有所頓悟)。這裡的find方法是從陣列中查詢。在find方法中我們需要傳入一個匿名函式,函式需要傳入三個引數:

  • value:表示當前查詢的值。
  • index:表示當前查詢的陣列索引。
  • arr:表示當前陣列。

在函式中如果找到符合條件的陣列元素就進行return,並停止查詢。你可以拷貝下邊的程式碼進行測試,就會知道find作用。

let arr3=[1,2,3,4,5,6,7,8,9]
console.log(arr3.find(function(val,index,arr){
	return val>5
}));

列印結果:

6

fill( )例項方法:

fill()也是一個例項方法,它的作用是把陣列進行填充,它接收三個引數,第一個引數是填充的變數,第二個是開始填充的位置,第三個是填充到的位置。

let arr=[1,2,3,4,5]
console.log(arr.fill('yy',1,5))

列印結果:

[ 1, 'yy', 'yy', 'yy', 'yy' ]

陣列的遍歷

for…of迴圈

這種形式比ES5的for迴圈要簡單而且高效。先來看一個最簡單的for…of迴圈。

let arr=['yy','uu','ii','jj','tt']
for(let i of arr){
	console.log(i);
}

列印結果:

yy
uu
ii
jj
tt

for…of陣列索引:有時候開發中是需要陣列的索引的,那我們可以使用下面的程式碼輸出陣列索引。

let arr=['yy','uu','ii','jj','tt']
for(let index of arr.keys()){
	console.log(index);
}

列印結果:

0
1
2
3
4

同時輸出陣列的內容和索引:我們用entries()這個例項方法,配合我們的for…of迴圈就可以同時輸出內容和索引了。

let arr=['yy','uu','ii','jj','tt']
for(let [index,val] of arr.entries()){
	console.log(index+'-'+val);
}

列印結果:

0-yy
1-uu
2-ii
3-jj
4-tt

entries()例項方式生成的是Iterator形式的陣列,那這種形式的好處就是可以讓我們在需要時用next()手動跳轉到下一個值。我們來看下面的程式碼:

let arr=['yy','uu','ii','jj','tt']
let list = arr.entries()
console.log(list.next().value);
console.log('-------------');
console.log(list.next().value);
console.log('-------------');
console.log(list.next().value);

列印結果:

[ 0, 'yy' ]
-------------
[ 1, 'uu' ]
-------------
[ 2, 'ii' ]