我正在使用TypeScript开发Web项目。在这里,我需要像[[C#HashTable这样的打字稿中的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?在打字稿中此HashTable是否有任何简单的属性或类?
或TS中的其他任何属性都具有相同的[[HashTable功能?
Map
,就我所知最接近HashTable。它的主要优点是它的键可以是Object
类型。
Set
,它基本上是一个唯一的数组。Object
也称为{}
。键值存储。Map
。JavaScript Object
或{}
比Map
快20倍。因此,仅在需要将对象用作键时才使用Map
。