我知道JavaScript现在有集合(set),但我想知道是否有实现多重集合(multiSet)功能的方法,或者是否有一些框架具有我非常需要的multiset函数。
否则,我必须自己编写代码来研究红黑树(Red-Black Tree)?
否则,我必须自己编写代码来研究红黑树(Red-Black Tree)?
MultiSet
TreeMultiSet
您可以使用内置的map类型和数值来构建自己的多重集合:
class Multiset {
_backing = new Map();
add(value) {
if (this._backing.has(value)) {
this._backing.set(value, 1 + this._backing.get(value));
} else {
this._backing.set(value, 1);
}
}
delete(value) {
if (this._backing.get(value) > 0) {
this._backing.set(value, this._backing.get(value) - 1);
} else {
//do nothing
}
}
get(value) {
if (this._backing.get(value) > 0) {
return this._backing.get(value);
} else {
return 0;
}
}
}
这是一个旧问题,但它排在了我的搜索结果的最顶部。我最终使用了lodash(类似于underscore): 例如,
_.countBy([1, 2, 1, 4, 4, 1])
提供结果
{ '1': 3, '2': 1, '4': 2 }