欢迎访问Ningto's博客

Menu
  • 首页
  • 归档
  • 关于
  • 书签
  • 必应壁纸
  • IT聚合
  • 工具
    • 我的工具列表
    • 我的网盘
    • 必应每日壁纸API
    • Html转Markdown
    • 仙尘光标
Menu

JavaScript 栈、队列

最后更新 2019-03-27 06:13:43   阅读量 1989

Table of Contents

  • 1. stack
  • 2. queue
  • 3. string拼接

Stack

栈,后进先出

class Stack {
    constructor() {
        this.list = []
    }

    pop() {
        const t = this.top()
        this.list.pop()
        return t
    }

    push(...item) {
        this.list.push(...item)
    }

    top() {
        return this.isEmpty() ? undefined : this.list[this.size() - 1]
    }

    size() {
        return this.list.length
    }

    isEmpty() {
        return this.list.length === 0
    }
}

Queue

队列,先进先出

class Queue {
    constructor() {
        this.list = []
    }

    dequeue() {
        const t = this.head()
        this.list.shift()
        return t
    }

    enqueue(...item) {
        this.list.push(...item)
    }

    head() {
        return this.isEmpty() ? undefined : this.list[0]
    }

    size() {
        return this.list.length
    }

    isEmpty() {
        return this.list.length === 0
    }
}

String拼接

考虑下面的方法

str = '';
for (/* each piece */) {
  str += piece; // bad for performance!
}
return str;

此方法将导致过多的中间字符串和连接操作,并且整体执行效果不佳

解决上面问题的方法是使用join

var tmp = [];
for (/* each piece */) {
  tmp.push(piece);
}
str = tmp.join(''); // Specified an empty separator, thanks Jonathan
return str;

此方法不会受到额外字符串对象的影响,并且通常执行得更快。

(转载本站文章请注明作者和出处:泞途 - ningto.com)

下一篇 – QSortFilterProxyModel排序不正确
上一篇 – Apache Ignite c++ linux 编译安装

  1. Javascript

toningto@outlook.com

标签云

IOS Qt Life Linux Java MongoDB Boost MQ Node.js Mac C/C++ Tools Design Python Bug Others Javascript Tips React Android Web Mobile Shell Product Go Database Windows

推广链接

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

多谢支持,用了好几年,服务很稳定支持多设备!

其他

文章RSS

Copyright © 2016 Welcome To Ningto Blog | 鄂ICP备17003086号-2