热搜:fiddler git ip ios 代理
历史搜索

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

游客2024-08-27 12:33:02

要在 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'}

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

如果需要对包含数字的 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 的元素解构到一个数组中。

标签:Array.from()