我正在尝试在TypeScript中做一些非常基本的事情。 Get a list of unique strings while parsing a map as referenced in this post.
这是我试图做的事情:
let myData = new Array<string>();
for (let myObj of this.getAllData()) {
let name = myObj.name;
console.log("## we have " + name);
console.log("### is property ? " + myData.hasOwnProperty(name));
if (!myData.hasOwnProperty(name)){
myData.push(name);
}
}
对于任何字符串,我的打印输出将始终评估为false,重复或不重复。以下是一些示例输出:
## we have COW
### is property ? false
## we have COW
### is property ? false
## we have RAODN
### is property ? false
## we have COOL
### is property ? false
但是,当该过程完成时,我的列表包含重复项。我试过看过这个documentation,但没有提到一个&#39; hashset&#39;或任何一般情况。
Set的TypeScript中是否有相同的东西?即一系列独特元素
答案 0 :(得分:19)
它存在!
EmployeeDataResponse employeeDataResponse = restTemplate.exchange(targetUrl, HttpMethod.GET, requestEntity, EmployeeDataResponse.class);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
答案 1 :(得分:5)
这篇文章的标题要求一个HashSet。 Set JavaScript实现循环遍历Set中的每个元素,该元素将为O(n)。为了使数据结构成为HashSet,它应接近O(1)。如果您对HashSet感兴趣,可以很容易地在TypeScript中创建它。这是一个基本的实现:
class HashSet {
private values = {}
add(val) {
this.values[val] = true
}
has(val) {
return this.values[val] === true
}
remove(val) {
delete this.values[val]
}
getValues() {
return Object.keys(this.values)
}
}
const hashSet = new HashSet()
hashSet.add(5)
hashSet.add(10)
console.log(hashSet.has(5)) // true
console.log(hashSet.getValues()) // [5, 10]
hashSet.remove(5)
console.log(hashSet.has(5)) // false
答案 2 :(得分:1)
对象{}是键值对字典是JavaScript中的哈希集,其中TypeScript是超集,因此您可以使用JS对象来担任此角色。
您发布的代码中的快速版本:
let myData = {};
for (let myObj of this.getAllData()) {
let name = myObj.name;
if (!myData[name]){
myData[name] = name;
}
}
答案 3 :(得分:1)
我找到了类似这样的解决方案:
let myData = new Array<string>();
for (let myObj of this.getAllData()) {
let name = myObj.name;
if (myData.indexOf(name) == -1){
myData.push(name);
}
}
不确定这是一个比目前为止更好的解决方案,但我决定坚持使用,直到选择更好的解决方案。
答案 4 :(得分:0)
我发现了一些看起来很有希望的东西 - 这是一个 http://www.timdown.co.uk/jshashtable/jshashset.html
并且它包含 Type Script 的类型定义
它实现了一个真正的 HashSet
- 带有 equals
和 hashcode
函数、存储桶等。