JavaScript類型化數組對象與數組的轉換

JavaScript類型化數組是一種類似數組的對象,並提供了一種用於訪問原始二進制數據的機制。 正如你可能已經知道,Array 存儲的對象能動態增多和減少,並且可以存儲任何JavaScript值。JavaScript引擎會做一些內部優化,以便對數組的操作可以很快。然而,隨着Web應用程序變得越來越強大,尤其一些新增加的功能例如:音頻視頻編輯,訪問WebSockets的原始數據等,很明顯有些時候如果使用JavaScript代碼可以快速方便地通過類型化數組來操作原始的二進制數據將會非常有幫助。
但是,不要把類型化數組與正常數組混淆,因爲在類型數組上調用 Array.isArray() 會返回false。此外,並不是所有可用於正常數組的方法都能被類型化數組所支持(如 push 和 pop)。

類型化數組

創建類數組對象

最常見的類數組對象是function函數中的屬性arguments

function create(){
	console.log(arguments);
}
create();

打印結果:[Arguments] {}

類型化數組轉化爲數組

方法一

function create(){
	console.log([...arguments]);
}
create();

打印結果:[] 表示已經將類數組轉化爲數組

方法二

function create(){
	console.log(Array.from(arguments));
}
create();

打印結果:[] 表示已經將類數組轉化爲數組

方法三

function create(){
	console.log(Array.prototype.slice.call(arguments));
}
create();

打印結果:[] 表示已經將類數組轉化爲數組

注意

沒有迭代器的不能轉化爲數組

var obj = {
	0:'a',
	1:'b',
	length:2
};
console.log([...obj]);

輸出結果:TypeError: obj is not iterable 轉換失敗,必須有迭代器

創建帶有迭代器的類數組

var obj = {
	0:'a',
	1:'b',
	length:2,
	[Symbol.iterator]:Array.prototype[Symbol.iterator]
};
console.log([...obj]);

輸出結果:[ ‘a’, ‘b’ ] 轉換成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章