如何用JavaScript对集合进行排序?

要在 JavaScript 中对集合进行排序,请执行以下操作:

  • 使用Array.from()方法将 Set 转换为数组。
  • 使用Array.sort()方法对数组进行排序。
  • 将数组转换回 Set 对象。
// ✅ 对包含字符串的集合进行排序

const set1 = new Set(['c', 'b', 'a']);

const sortedArray = Array.from(set1).sort();
console.log(sortedArray); // ['a', 'b', 'c']

const sortedSet = new Set(sortedArray);
console.log(sortedSet); // {'a', 'b', 'c'}

对包含字符串的集合进行排序

如果需要对包含数字的 Set 进行排序,则必须将函数传递给Array.sort()方法。

// ✅ 对包含数字的集合进行排序

const set1 = new Set([300, 100, 700]);

// 按升序对数字进行排序
const sortedArray = Array.from(set1).sort((a, b) => a - b);
console.log(sortedArray); // [100, 300, 700]

const sortedSet = new Set(sortedArray);
console.log(sortedSet); // {100, 300, 700}

我们使用Array.from()方法将 Set 对象转换为数组,因此我们可以对数组调用Array.sort()方法。

注意,在对数字进行排序时,我们必须将一个函数作为参数传递给sort()方法,而对于字符串,则不这样做。

我们传递给sort()方法的参数是一个定义排序顺序的函数。

如果不提供参数,数组元素将转换为字符串,并根据其 UTF-816 代码单位值进行排序。

这不是我们在处理包含数字的 Set 对象时想要的,但是,这正是我们在比较字符串时想要的。

对数组进行排序后,我们将其传递给Set()构造函数,以将其转换回 Set。

如果必须经常这样做,请定义可重用的函数。

function sortStringSet(set) {
  const sortedArray = Array.from(set).sort();

  const sortedSet = new Set(sortedArray);

  return sortedSet;
}

// Set(3) { 'a', 'b', 'c' }
console.log(sortStringSet(new Set(['c', 'b', 'a'])));

// Set(3) { 'a', 'c', 'z' }
console.log(sortStringSet(new Set(['c', 'z', 'a'])));

sortStringSe()函数将包含字符串的 Set 作为参数,并对 Set 进行排序。

我们还可以定义一个 sortNumbersSet()函数。

function sortNumbersSet(set) {
  const sortedArray = Array.from(set).sort((a, b) => a - b);

  const sortedSet = new Set(sortedArray);

  return sortedSet;
}

// Set(3) { 100, 300, 700 }
console.log(sortNumbersSet(new Set([700, 100, 300])));

// Set(3) { 100, 500, 600 }
console.log(sortNumbersSet(new Set([500, 600, 100])));

该函数将数字 Set 作为参数,并对 Set 进行排序。

使用…运算符对集合进行排序

或者,可以使用(…)运算符将集合转换为数组。

// ✅ 对包含字符串的 Set 对象进行排序
const set1 = new Set(['c', 'b', 'a']);

const sortedArray = [...set1].sort();
console.log(sortedArray); // [ 'a', 'b', 'c' ]

const sortedSet = new Set(sortedArray);
console.log(sortedSet); // {'a', 'b', 'c'}

如果 Set 对象包含数字,请将函数传递给Array.sort()方法。

const numbersSet = new Set([300, 100, 700]);

const sortedNumbers = [...numbersSet].sort((a, b) => a - b);
console.log(sortedNumbers); // [100, 300, 700]

const sortedNumbersSet = new Set(sortedNumbers);
console.log(sortedNumbersSet); // {100, 300, 700}

代码示例实现了与使用Array.from()方法的代码示例相同的结果。

(…)运算符只是将 Set 的元素解构到一个数组中。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 如何用JavaScript对集合进行排序?

发表回复