js中关于真伪数组转换的问题

在js中碰到关于真伪数组转换的问题,我们经常使用数组原型对象上push方法,再用call或者apply方法来修改this指针从而达到真伪数组转换的目的

真数组转化为伪数组:

var obj = {};
var arr = [1,3,5];
[].push.apply(obj,arr);
console.log(obj);

结果是


Paste_Image.png

伪数组转换为真数组:

 var arr = [];
 var obj = {
     0:'邵蒙蒙',
     1:25,
     2:'女',
     length:3
 };
 [].push.apply(arr,obj);
 console.log(arr);

结果


Paste_Image.png

但是注意:一般浏览器可以把系统自带的伪数组以及自定义的伪数组转化成真的数组,但是在ie8及其以下版本,在ie8以及以下不能通过apply方法把对应的自定义的伪数组转化成对应的值,所以我们可以先把伪数组转化成真的数组,然后通过apply方法来设置
slice方法如果不传递任何参数,会把原来的数组返回

var arr = [1,3,5];
console.log(arr.slice());

结果


Paste_Image.png

采用slice方法将自定义的伪数组转换为真数组

    var obj = {
        0:'邵蒙蒙',
        1:25,
        2:'女',
        length:3
    };
    var arr = [].slice.call(obj);
    console.log(arr);

结果


Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容