new Set(['b', 'a', 'c']).sort()
抛出TypeError: set.sort is not a function
。如何对Set
进行排序以确保特定的迭代顺序?
答案 0 :(得分:83)
集合不是有序的抽象数据结构。
但是Set
总是具有相同的迭代顺序 - 元素插入顺序[1],所以当你迭代它时(通过迭代方法,通过调用Symbol.iterator
或者通过for ...来你可以随时期待。
您始终可以将该集转换为数组并对其进行排序。
Array.from(new Set(["b","a","c"])).sort();
[...(new Set(["b","a","c"]))].sort(); // with spread.
答案 1 :(得分:1)
最简单的方法。
console.log(new Set(['b', 'a', 'c'].sort()))
//Set(3) {"a", "b", "c"}
答案 2 :(得分:0)
在某些情况下,可能更喜欢就地“排序”集合,类似于array.sort()
,可以这样完成:
function sortSet(set) {
const entries = [];
for (const member of set) {
entries.push(member);
}
set.clear();
for (const entry of entries.sort()) {
set.add(entry);
}
return set;
};
sortSet(new Set([3,2,1]))
// => Set(3) { 1, 2, 3 }