多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] >[success] # 类数组对象 什么是 **类数组对象** ? **类数组对象** : **类数组对象** 是指一个 **对象** ,它看起来 **像一个数组** ,因为它有一个 **length 属性** 和一些 **数字索引** , **但它不是一个真正的数组,因为它没有数组对象的方法和属性,例如 push(), pop(), slice() 等等**。 **类数组对象数据结构** ~~~ var obj = { 0: 'a', 1: 'b', length: 2 } ~~~ 为了让 **类数组对象** 可以像真正的数组一样操作,我们可以将它们 **转换成数组** 。常用的方法有: 1. **Array.from()** 2. **Array.prototype.slice.call()** 3. **Array.prototype.concat.apply([], arrLikeObj)** **转换代码** ~~~ // 类数组对象(类似数组的对象,没有数组的方法) var obj = { 0: 'a', 1: 'b', length: 2 } console.log(Array.from(obj)) // ['a', 'b'] console.log(Array.prototype.slice.call(obj)) // ['a', 'b'] console.log(Array.prototype.concat.apply([], obj)) // ['a', 'b'] ~~~ 需要注意的是, **类数组对象** 只包含 **数字索引** 的元素,**不包含其他属性 ,因此转换成数组后也只能保留元素的值,不能保留其他属性。同时,如果类数组对象的 length 属性值不准确,可能会导致一些转换问题** >[success] ## 总结 **Array.from** 方法不仅可以把 **类数组对象** 转换成 **数组** ,也可以把 **可迭代对象(Array(数组)、String(字符串)、Map、Set、TypedArray、arguments 对象等)** 转换成 **数组** 。