如何对 ES6 “套装”进行排序?
2022-08-30 05:25:51
new Set(['b', 'a', 'c']).sort()
抛出。如何对 进行排序以确保特定的迭代顺序?TypeError: set.sort is not a function
Set
new Set(['b', 'a', 'c']).sort()
抛出。如何对 进行排序以确保特定的迭代顺序?TypeError: set.sort is not a function
Set
集合不是有序抽象数据结构。
然而,A 总是具有相同的迭代顺序 - 元素插入顺序 [1],因此当您迭代它(通过迭代方法、调用 或 for.. of 循环)时,您始终可以期望如此。Set
Symbol.iterator
您始终可以将该集合转换为数组并对其进行排序。
Array.from(new Set(["b","a","c"])).sort();
[...(new Set(["b","a","c"]))].sort(); // with spread.
[1] forEach
和 CreateSetIterator
在某些情况下,最好对集合进行就地“排序”,类似于 ,可以像这样完成: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 }