解构赋值来把类数组对象转化为数组报错

解构赋值来把类数组对象转化为数组报错

把类数组对象转为数组

法1:for循环为老办法,

法2:用Array.prototype.slice.call(类数组对象)

法3:解构赋值, let [...arr]=类数组对象  let arr=[...类数组对象]

这里我试了下,解构赋值报错了,为什么?是写的对象还不属于类数组对象吗。另外还有其他的方法吗

相关代码:

const obj={
0:1,
1:"dfs",
2:false,
length:2
} //类数组对象的属性名必须为数值或字符串型的数字
// console.log(Array.from(obj)) //Array2,因为length写的2,后面的会被截
// console.log(Array.prototype.slice.call(obj));

// console.log(obj)
let arr=[...obj];
console.log(arr)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2021-02-20 18:19:49

同学你好,写的obj内容虽然形似类数组对象,但是本质上还是一个普通对象,与真正的类数组对象不一样。所以不能在数组中使用...扩展,会报类型不对的错误,obj不能迭代 

http://img1.sycdn.imooc.com//climg/6030e20009ebae9b05860043.jpg

可以试试获取元素得到类数组对象看看

http://img1.sycdn.imooc.com//climg/6030e21a094e07d204560194.jpg

http://img1.sycdn.imooc.com//climg/6030e23109efdc9309540224.jpg

这样就可以转化了

http://img1.sycdn.imooc.com//climg/6030e2410981be4905180082.jpg

祝学习愉快!

  • 提问者 王文辉 #1

    类数组对象转化为数组有其他方法吗


    2021-02-20 18:21:43
  • 好帮手慕星星 回复 提问者 王文辉 #2

    同学的意思是除了这两种方式的其他方式吗?

    http://img1.sycdn.imooc.com//climg/6030eeda09baa90009880089.jpg

    还可以将call改为apply方法

    http://img1.sycdn.imooc.com//climg/6030eefa0976a69c09000067.jpg

    http://img1.sycdn.imooc.com//climg/6030ef0c09bc23e503210031.jpg

    2021-02-20 19:14:26
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师