2018-08-27日前端面试题

点击查看源码

请分别说明利用js数组模拟队列和堆栈的方法
创建队列更加严谨的方法请参考:https://www.jianshu.com/p/0c44bacb497e

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <title>请分别说明利用js数组模拟队列和堆栈的方法</title>
    </head>

    <body>
        <p>请分别说明利用js数组模拟队列和堆栈的方法</p>
        <h3>队列遵循FIFO(先进先出)原则的一组有序的项。队列在尾部添加新元素,在顶部移除元素,最新添加的元素必须在队列的尾部。</h3>
        <h3>栈是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出,在顶部插入,顶部移除</h3>
        <h3>堆是指程序运行时申请的动态内存</h3>
        <ul>
            <li>shift:从数组中把第一个元素删除,并返回这个元素的值。</li>
            <li>unshift: 在数组的开头添加一个或更多元素,并返回新的长度</li>
            <li>push:在数组的中末尾添加元素,并返回新的长度</li>
            <li>pop:从数组中把最后一个元素删除,并返回这个元素的值。</li>
        </ul>
        
    </body>
    <script type="text/javascript">
        window.onload = function() {
            /**
             * @date 2018-8-25 22:47
             * @author DIEW
             * @class QUEUE
             * 队列
             */
            function QUEUE() {
                this.dataBase = []; //创建空数组,存储数据(会暴露到外界,导致在方法外可以直接修改dataBase,参考:https://www.jianshu.com/p/0c44bacb497e 解决)
                //入队(在队尾插入数据)
                this.enqueue = function(data) {
                    this.dataBase.push(data);
                };
                //出队(移除顶部的数据)
                this.dequeue = function() {
                    this.dataBase.shift();
                };
            };
            //使用
            var queue = new QUEUE();
            queue.enqueue(1);
            queue.enqueue(12);
            console.log(queue.dataBase); //[1, 12]
            queue.dequeue();
            console.log(queue.dataBase); //[12]


            /**
             * @date 2018-8-25 22:47
             * @author DIEW
             * @class STACK 
             * 栈
             */
            function STACK(){
                this.dataBase = [];
                //入栈
                this.enstack = function(data){
                    this.dataBase.unshift(data);
                };
                //出栈
                this.destack = function(){
                    this.dataBase.shift();
                };
            };
            //使用
            var stack = new STACK();
            stack.enstack(1);
            stack.enstack(12);
            console.log(stack.dataBase); //[12, 1]
            stack.destack();
            console.log(stack.dataBase); //[1]
            
        };
    </script>

</html>

使用jQuery选择器找出所有p标签下的第一个a标签中的属性名 为na且值为“b”开头的元素(即输出b1和b4)

<div>
            <p><a na="b1">b1</a><a na="b2"></a></p>
            <p><a na="a1">a1</a><a na="b3"></a></p>
            <p><a na="b4">b4</a><a na="ab"></a></p>
            <p><a>null</a><a na="b5"></a></p>
        </div>

        var el = $("p").find("a:first[na][na!='a1']");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容