js模拟数组对象方法

作者: 马大哈tt | 来源:发表于2017-09-30 11:17 被阅读0次

数组对象是js类库中自带的,我们使用时直接调用对象的方法就可以了,�但是我们也能自己写代码模拟这些方法,一个牛掰的程序员是可以自己写一个类库,他自己的需求写入其中,好佩服这一类人,我这大白离这水平自然是差了 N多个等级,不过可以慢慢的练,从模拟一些系统自带的对象方法做起。。。

在这之前先说两个将会用到的知识点:
1.prototype 可以给某个类添加属性或方法
2.arguments:参数列表,调用的时候写了多少个参数,arguments就有几个元素。arguments是所有参数组成的数组

接下来给大家分享几个仿写数组对象的方法:

1.push 向数组的末尾添加一个或更多元素,并返回新的长度

Array.prototype.myPop = function(){
        var res = this[this.length - 1];
        this.length = this.length - 1;
        return res;
    }
    console.log(a.myPop(),a);

2.reverse 颠倒数组中元素的顺序

Array.prototype.myReverse = function(){
        for(var i = 0; i < parseInt(this.length/2); i++){
            var temp = this[i] ;
            this[i] = this[this.length - 1 -i];
            this[this.length - 1 -i] = temp;
        }
    }

3.nushift 向数组的开头添加一个或更多元素,并返回新的长度

Array.prototype.myUnshift = function(){
        this.myReverse();    //调用前面自己写的myReverse方法
        for(var i = arguments.length - 1; i >= 0;i--){
            this.myPush(arguments[i]);  //调用前面自己写的myPush方法
        }
        this.myReverse();
    }

4.shift 删除并返回数组的第一个元素

Array.prototype.myShift = function(){
        this.myReverse();
        var res = this.myPop();
        this.myReverse();
        return res;
    }

5.join 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔

Array.prototype.myJoin = function(str){
        if(str === undefined){
            str = ",";    //传入的参数为空时用逗号隔开
        }
        var all = "";
        for(var i = 0; i < this.length - 1;i++){
            all = all + this[i] +str;
        }
        all  += this[this.length - 1];
        return all;
}

6 splice 删除元素,并向数组添加新元素(此方法功能较多,比上面复杂一点,大家可以看注释)

Array.prototype.mySplice = function(index,length){
        var arr = []; // 存放拼接的新数组
        var resArr = []; // 作为返回值返回
        // 把index-length范围的数组做成数组,作为mySplice的返回值
        for(var i = index; i < index + length ;i++){
            resArr.myPush(this[i]);
        }
        // 拼接新的数组分为三部分
        // 1.范围之前,index之前
        for(var i = 0; i < index; i++){
            arr.myPush(this[i]);
        }
        // 2.参数列表里面下标2(包括2)之后的参数
        for(var i = 2; i < arguments.length; i++){
            arr.myPush(arguments[i]);
        }
        // 3.范围之后,index+length开始,到最后一个
        for(var i = index + length;i < this.length;i++){
            arr.myPush(this[i]);
        }
        // arr 新数组赋值给this this不能被赋值
        this.length = 0;
        for(var i = 0; i < arr.length; i++){
            this[i] = arr[i];
        }

        return resArr;
    }

这是几个数组常用的方法,其他方法有兴趣的也可以自己总结,还有字符串对象的方法跟数组的方法也相似,我整理了一部分,鉴于有些方法的功能的没实现,就不分享了,�由于技术没到火候,现在有些方法整理的比较吃力, 大家若是写了欢迎跟我分享。

相关文章

  • js模拟数组对象方法

    数组对象是js类库中自带的,我们使用时直接调用对象的方法就可以了,�但是我们也能自己写代码模拟这些方法,一个牛掰的...

  • JS数组以及数组变换

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

  • JS 数组

    JS 数组是一种特殊的对象,不是真正的数组,它只##是通过对象来模拟数组。 JS 数组的定义 let arr = ...

  • JS数组

    Get Started • 数组对象• 增删改查 数组对象 一种特殊的对象JS其实没有真正的数组,只是用对象模拟数...

  • js中数组对象去重的方法

    采用数组中的reduce方法,遍历数组,也是通过对象访问属性的方法 参考js中数组对象去重的方法

  • JS数组

    1.js数组是什么? 1.1真实的数组 其实js不是典型的数组,是用对象来模拟的数组,真实的数据应该 元素的数据类...

  • JS数组的相关知识

    首先要明确一点,JS其实没有真正的数组,只是用对象来模拟数组。以下是典型数组与JS数组之间的不同。 典型的数组 元...

  • JS jsonArray操作

    JS jsonArray操作 js对数组对象的操作以及方法的使用 如何声明创建一个数组对象:var arr = n...

  • Vue 数组相关

    1.如何对数组进行插入或删除splice Vue数组中存对象 关于绑定方法,方法里面传递对象数据 js中数组如何进...

  • js与ES6数组常用方法区别

    js数组 数组的概念及其定义方式字面量的形式 构造函数 数组的常用方法(依赖于数组使用)获取方法:对象.方法( )...

网友评论

    本文标题:js模拟数组对象方法

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