文档章节

重写JS中Array的栈(push()&&pop())和队列(shift()&&unshift())

YJ_
 YJ_
发布于 2017/05/03 12:00
字数 298
阅读 14
收藏 0
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Arr</title>
    <script>
        //栈
        /*-----------------------------------------------push()---------------------------------------*/
        //Array中的push():逐个添加在数组的末尾,返回数组的长度
        /*
        * arr = [1,2,3];
        * arr.push(4)
        * arr = [1,2,3,4];
        * arr.length = 4;
        * */
        Array.prototype.yjPush = function () {
            var arr = this;
            for(var i = 0;i<arguments.length;i++){
                arr[arr.length] = arguments[i];
            }
            return arr.length;
        };
        var arr = [1,2,3];
        var val = arr.yjPush("hello",5,"ddd");
        console.log(arr);
        console.log(val);

        /*-------------------------------------------------pop()-------------------------------------*/
        //Array中的pop():从数组的末尾移除最后一项,减少数组的length值,返回移除的项。
        /*
        * arr = [1,2,3];
        * arr.pop();
        * arr = [1,2];
        * */
        Array.prototype.yjPop = function () {
            var remove = this[this.length-1];
            this.length = this.length-1;
            return remove;
        };
        var arr = [1,2,3];
        var val = arr.yjPop();
        console.log(arr);
        console.log(val);

        //队列
        /*--------------------------------------------------shift()-----------------------------------*/
        //Array中的shift():移除数组中的第一项,并且返回该项,同时将数组的长度减1
        /*
        * arr = [1,2,3];
        * arr.shift();
        * arr = [2,3];
        * */
        Array.prototype.yjShift = function () {
            var remove = this[0];
            for(var i = 0;i<this.length;i++){
                this[i] = this[i+1];
            }
            this.length = this.length-1;
            return remove;
        };
        var arr = [1,2,3];
        var val = arr.yjShift();
        console.log(arr);
        console.log(val);

        /*-----------------------------------------------unshift()----------------------------------------*/
        //Array中的unshift():在数组的前端添加任意个项,并返回新数组的长度
        /*
        * arr = [1,2,3];
        * arr.unshift(4,5);
        * arr = [4,5,1,2,3];
        * */
        Array.prototype.yjUnshift = function () {
            this.length = this.length+arguments.length;//5
            for(j = this.length-1;j>arguments.length-1;j--){
                this[j] = this[j-2];
            }
            for(var i = 0;i<arguments.length;i++){
                this[i] = arguments[i];
            }
            return this.length;
        };
        var arr = [1,2,3];
        var val = arr.yjUnshift("hello",5);
        console.log(arr);
        console.log(val);
    </script>
</head>
<body>

</body>
</html>

© 著作权归作者所有

共有 人打赏支持
YJ_

YJ_

粉丝 5
博文 96
码字总数 78171
作品 0
昌平
前端工程师
私信 提问
javascript引用类型之Array类型

除了Object之外,Array类型恐怕是javascript中最常用的类型了。而且,javascript中的数组与其他多数语言中的数组有着相当大的区别。javascript数组的每一项可以保存任何类型的数据。也就是说...

柳哥
2015/04/06
0
0
数组的操作push,pop,shift,unshift

JS中的数组提供了四个操作,以便让我们实现队列与堆栈! 小理论: 队列:先进先出 堆栈:后进先出 实现队列的方法: shift:从集合中把第一个元素删除,并返回这个元素的值。 unshift: 在集合...

文文1
2016/01/30
67
0
前端高频面试题 JavaScript篇

以下问题都来自于互联网前端面经分享,回答为笔者通过查阅资料加上自身理解总结,不保证解答的准确性,有兴趣讨论的同学可以留言或者私信讨论。 1.JS的异步机制? 2.闭包如何实现? 3.原型链、...

大雄的学习人生
06/25
0
0
javascript实用技巧--数组.

数组和字符串类型对象的方法我特容易搞混淆,所以把他列出来,免得每次取查。 1、concat方法 [作用] 将多个数组联合起来,这个方法不会改变现存的数组,它只返回了所结合数组的一份拷贝。 [语...

晨曦之光
2012/03/09
0
0
【每天学3章,一周掌握js】第5章:引用类型

关于引用类型的定义: 引用类型的值(对象)是引用类型的一个实例。 在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也通常被称为【类】,但是在js中,类这个称呼并...

自由的灵魂
2012/07/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

binlog2sql mysql数据库闪回工具

binlog2sql工具比mysqlbinlog+sed恢复更快捷。 1、安装: 从github上下载:https://github.com/danfengcao/binlog2sql shell> git clone https://github.com/danfengcao/binlog2sql.git && c......

mickelfeng
26分钟前
2
0
SpringCloud 复杂对象接收时候对象变成LinkeHashMap

如果定义feign接口为 @PostMapping("/user/queryUserByAccountStatus") BaseResult queryUserByAccountStatus(@RequestBody AccountsTenantIdStatusArg arg); 其中BaseResult的范性应该为Lis......

xiaomin0322
26分钟前
1
0
Android/Java 读、写MP3文件ID3V1信息

MP3的歌曲信息一般分两个大版本,分别是ID3V1和ID3V2,其中V2又分为好几个版本,具体百度一下,下方的代码仅仅是支持ID3V1。 需要用到的一个辅助工具(juniversalchardet)用于解决乱码问题,...

她叫我小渝
27分钟前
1
0
thymeleaf的onclick标签传参异常

异常 org.thymeleaf.exceptions.TemplateProcessingException: Only variable expressions returning numbers or booleans are allowed in this context, any other datatypes are not trust......

EasyProgramming
27分钟前
1
0
前端杂谈: CSS 权重 (Specificity)

前端杂谈: CSS 权重 (Specificity) css 权重想必大家都听说过, 一些简单的规则大部分人也都知道: 较长的 css selector 权重会大于较短的 css selector id selector 权重高于 class selector...

ssthouse_hust
35分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部