美文网首页
js中关于真伪数组转换的问题

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

作者: 柠檬不萌5120 | 来源:发表于2017-05-24 18:09 被阅读0次

    在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

    相关文章

      网友评论

          本文标题:js中关于真伪数组转换的问题

          本文链接:https://www.haomeiwen.com/subject/imuoxxtx.html