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’ ] 转换成功

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