在TypeScript中是否有任何定义的HashTable类,如C#



我正在使用TypeScript开发Web项目。在这里,我需要打字稿中的HashTable功能,如C#HashTable但是我已经在JavaScript中开发了它。

        this.length = 0;
    this.items = [];
    this.add = function (key, value) {
        this.previous = undefined;
        if (this.containsKey(key)) {
            this.previous = this.items[key];
        } else {
            this.length++;
        }
        this.items[key] = value;
        return this.previous;
    };
    this.clear = function () {
        this.items = {};
        this.length = 0;
    };
    this.contains = function (key) {
        return this.items.hasOwnProperty(key);
    };
    this.containsKey = function (key) {
        return this.items.hasOwnProperty(key);
    };
    this.containsValue = function (key) {
        return (this.items.hasOwnProperty(key) && this.items[key] != undefined) ? true : false;
    };
    this.getItem = function (key) {
        if (this.containsKey(key))
        {
            return this.items[key]
        }
        else
        {
            return  undefined;
        }
    };
    this.keys = function () {
        var keys = [];
        for (var k in this.items) {
            if (this.containsKey(k)) {
                keys.push(k);
            }
        }
        return keys;
    };
    this.remove = function (key) {
        if (this.containsKey(key)) {
            this.previous = this.items[key];
            this.length--;
            delete this.items[key];
            return this.previous;
        } else {
            return undefined;
        }
    };
    this.values = function () {
        var values = [];
        for (var k in this.items) {
            if (this.containsKey(k)) {
                values.push(this.items[k]);
            }
        }
        return values;
    };
    this.each = function (fn) {
        for (var k in this.items) {
            if (this.containsKey(k)) {
                fn(k, this.items[k]);
            }
        }
    };
    var previous = undefined;
}
return HashTable;

像这样,打字稿有预定义的代码吗? 或者我需要将这些代码从JS重写为TS? 打字稿中这个哈希表有什么简单的属性或类吗?

或者 TS 中的任何其他属性来执行相同的哈希表功能?

Modern JavaScript 有三个选项:

  • Map,最接近我所知的哈希表。它的主要优点是它的密钥可能是 Object 型 .
  • Set,它基本上是一个独特的数组。
  • Object也被称为{}。键值存储。

我建议使用对象,但是如果您的密钥需要对象,请使用Map.


JavaScript Object,或{},比Map快20倍。因此,仅当您需要使用对象作为键时才使用 Map

如上所述,

Map 可能是正确的答案,但也许带有类型的哈希图看起来像这样会起作用:

{ [key: string]: Type; }
or
{ [key: number]: Type; }

最新更新