文档章节

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

YJ_
 YJ_
发布于 2017/05/03 12:00
字数 298
阅读 10
收藏 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
博文 93
码字总数 76754
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

ES6 Promise

Promise promise是异步编程的一种解决方案 1 什么是异步? 异步模式,每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则...

NDweb
25分钟前
0
0
Python百分登顶年度编程语言排行榜

今天 IEEE Spectrum 发布了 2018 年度顶级编程语言排行榜。该榜单可根据流行趋势、职业方向、语言类型等多个标准各自细分生成榜单,也可以综合多个标准进行排列,使用者可以根据自己的需求过...

六库科技
29分钟前
0
0
consul笔记

安装和启动就不说了,很简单。 注册一个服务: http://localhost:8500/v1/agent/service/register put请求,json格式内容如下 { "ID": "userServiceId", //服务id "Name": "userService", //服...

朝如青丝暮成雪
29分钟前
0
0
iOS CollectionView 的那些事

UICollectionView是开发中用的比较多的一个控件,本文记录UICollectionView在开发中常用的方法总结,包括使用UICollectionViewFlowLayout实现Grid布局、添加Header/Footer、自定义layout布局...

aron1992
29分钟前
0
0
linux tar.gz zip 解压缩 压缩命令

http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0.9.6.zip download SDK link http://dl.google.com/Android/android-sdk_r11-linux_......

owensliu
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部