美文网首页
仿写数组对象

仿写数组对象

作者: 浅夏_cd06 | 来源:发表于2017-12-27 20:51 被阅读0次

title: 仿写数组对象
date: 2017-11-13 20:26:25
tags:


数组对象 <font style="color: #8D0000;">push | pop | shift | unshift | reverse | splice | join | slice</font>

prototype给某个类添加属性或方法

    var a=[1,2,3];
    var b=[4,5,6];

<font style="color: #8000D0;">给数组类(所有的数组对象)添加myPush方法</font>

        Array.prototype.myPush=function(){
            // 哪个数组对象调用myPush,this就指向调用myPush的数组对象
            // console.log(this);
            // 调用的时候,写了多少个参数,arguments就有几个元素,arguments是所有参数组成的数组,称为参数列表
            // console.log(arguments);
            // arguments参数列表,获取用户写入的参数列表
            for(var i=0;i<arguments.length;i++){
                this[this.length]=arguments[i];
            }
        }
        a.myPush(44,55,66);
        console.log(a);

<font style="color: #8000D0;">给数组类(所有的数组对象)添加myPop方法</font>

        Array.prototype.myPop=function(num){
            // 无参数
            // var res=this[this.length-1];
            // this.length=this.length-1;
            // 有参数
            var res=[];
            for(var i=this.length-num;i<this.length;i++){
                res.myPush(this[i]);
            }

            this.length=this.length-num;
            return res;
        }
        // a.myPop(2);
        console.log(a.myPop(2),a);

<font style="color: #8000D0;">给数组类(所有的数组对象)添加myReverse方法</font>

        Array.prototype.myReverse=function(){
            for(var i=0;i<parseInt(this.length/2);i++){
                // this[i]和this[this.length-1-i]交换即可
                var temp=this[i];
                this[i]=this[this.length-1-i];
                this[this.length-1-i]=temp;
            }
        }
        console.log(a);
        a.myReverse();
        console.log(a);

<font style="color: #8000D0;">给数组类(所有的数组对象)添加myUnshift方法</font>

        Array.prototype.myUnshift=function(){
            this.myReverse();
            for(var i=arguments.length-1;i>=0;i--){
                this.myPush(arguments[i]);
            }
            this.myReverse();
        }
        console.log(a);
        a.myUnshift(100,200);
        console.log(a);

<font style="color: #8000D0;">给数组类(所有的数组对象)添加myShift方法</font>

        Array.prototype.myShift=function(){
            this.myReverse();
            var res=this.myPop(2);
            this.myReverse();
            return res;
        }
        // a.myShift();
        console.log(a.myShift(),a);

<font style="color: #8000D0;">给数组类(所有的数组对象)添加myJoin方法</font>

        Array.prototype.myJoin=function(str){
            if(str===undefined){
                str=",";
            }
            var all='';
            for(var i=0;i<this.length-1;i++){
                all += this[i]+str;
            }
            all+=this[this.length-1];
            return all;

            // // 方法二
            // all+=this[0];
            // for(var i=1;i<this.length-1;i++){
            //  all += this[i]+str;
            // }
            // return all;

            // // 方法三
            // var all='';
            // for(var i=0;i<this.length-1;i++){
            //  if(i==this.length-1){
            //      str="";
            //  }
            //  all += this[i]+str;
            // }
            // return all;
        }
         console.log(a.myJoin(""));

         console.log(Boolean("")===Boolean(undefined));

<font style="color: #8000D0;">给数组类(所有的数组对象)添加mySplice方法</font>

        Array.prototype.mySplice=function(index,length){
            var res=[];
            var newArr=[];
            // 把index-length范围的数做成数组,作为mySplice的返回值
            for(var i=index;i<index+length;i++){
                res.myPush(this[i]);
            }
            // 拼成新的数组分为三部分
            // 1、范围之前,index之前
            for(var i=0;i<index;i++){
                newArr.myPush(this[i]);
            }
            // 2、参数列表里面下标2(包括下标2)之后的参数
            for(var i=2;i<arguments.length;i++){
                newArr.myPush(arguments[i]);
            }
            // 3、范围之后,index+length开始,到最后一个
            for(var i=index+length;i<this.length;i++){
                newArr.myPush(this[i]);
            }
            // newArr 新数组
            this.length=0;
            for(var i=0;i<newArr.length;i++){
                this.myPush(newArr[i]);
            }
            return res;
        }
        console.log(a);
        console.log(a.mySplice(2,1,33,44,55,66));
        console.log(a);

<font style="color: #8000D0;">给数组类(所有的数组对象)添加mySlice方法</font>

        Array.prototype.mySlice=function(start,end){
            var res=[];
            for(var i=start;i<end;i++){
                res.myPush(this[i]);
            }
            return res;
        }
        console.log(a);
        console.log(a.mySlice(2,4));

相关文章

  • 仿写数组对象

    title: 仿写数组对象date: 2017-11-13 20:26:25tags: 数组对象

  • 读写营作业14

    【主题】散文片段仿写。自选符合自己风格的散文作品进行模仿。200字以内的仿写片段,注明仿写对象。 我仿写的是刘亮程...

  • RAC宏分析2:获取可变参

    把可变参装入数组 rac_liftSelector:withSignals:....我们仿写一个:

  • 6:仿写一个ArrayList数组(文末有项目连接)

    1:仿写一个ArrayList数组 2:代码实战 3:代码测试 项目连接

  • 数组去重的几种方式

    上篇我们写到了数组中包含多条对象的去重方式数组中包含多条对象的去重方式,今天我们就写一下普通数组去重吧. 数组去重...

  • 小哥带来的学习

    1、写一个方法:不定参数求和 前言: 1、类数组对象: 在javascript中,数组是一个特殊的对象,其prop...

  • PHP数组&对象转换

    对象转数组 数组转对象

  • Javascript 对象数组取差集和交集的方法

    前言 对象数组常会进行取交集或者差集的操作。假设有对象数组A和对象数组B,常规方法是比较B对象数组与A对象数组的差...

  • 仿写JQ方法

    原生js仿写jq 仿写jq的click方法 仿写jq的on事件 仿写jq的eq方法 仿写jq的 css方法 仿写j...

  • JS数组以及数组变换

    有关数组 数组对象——一种特殊的对象JS其实没有数组,只使用对象来模拟数组 典型数组和JS数组的区别 典型数组 元...

网友评论

      本文标题:仿写数组对象

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