在 JavaScript 中以相反的顺序遍历 Map 或 Set

目录

Iterate over a Map in Reverse Order in JavaScript

  1. 在 JavaScript 中以相反的顺序遍历地图
  2. 在 JavaScript 中以相反的顺序遍历集合

以相反的顺序遍历 Map

Map以相反的顺序遍历 a :

  1. 使用Array.from()方法将 转换Map为数组。
  2. 使用reverse()方法反转数组。
  3. 调用该forEach方法以遍历反转数组。
索引.js
const map1 = new Map([ ['one', 1], ['two', 2], ]); // 👇️ [['two', 2], ['one', 1]] const reversedArr = Array.from(map1).reverse(); reversedArr.forEach(([key, value]) => { console.log(key, value); // 👉️ two 2, one 1 });

第一步是将
Map转换
为数组。

索引.js
const map1 = new Map([ ['one', 1], ['two', 2], ]); // 👇️ [['one', 1], ['two', 2]] const arr = Array.from(map1);

我们使用
Array.reverse
方法来反转数组。

索引.js
const map1 = new Map([ ['one', 1], ['two', 2], ]); // 👇️ [['one', 1], ['two', 2]] const arr = Array.from(map1); // 👇️ [['two', 2], ['one', 1]] const reversed = arr.reverse();
reverse()方法就地反转数组并返回结果。

然后我们使用
Array.forEach
方法迭代反向数组。

我们传递给该forEach方法的函数将随数组的每个元素一起调用。

我们使用
解构赋值
来分配
keyvalue变量。

索引.js
const [key, value] = ['one', 1]; console.log(key); // 👉️ "one" console.log(value); // 👉️ 1

您还可以使用
展开语法 (…)
将 转换
Map为数组。

索引.js
const map1 = new Map([ ['one', 1], ['two', 2], ]); // 👇️ [['two', 2], ['one', 1]] const reversedArr = [...map1].reverse(); reversedArr.forEach(([key, value]) => { console.log(key, value); // 👉️ two 2, one 1 });

此代码示例实现了相同的结果,但是这次我们使用展开语法 (…) 将 的键值对解包Map到一个数组中。

在极少数情况下,扩展语法 (…) 在使用 TypeScript 时效果不佳。使用时不会出现此问题Array.from

Iterate over a Set in Reverse Order in JavaScript #

To iterate over a Set in reverse order:

  1. Use the Array.from() method to convert the Set to an array.
  2. Use the reverse() method to reverse the array.
  3. Call the forEach method to iterate over the reversed array.
index.js
const set1 = new Set(['a', 'b', 'c']); Array.from(set1) .reverse() .forEach(element => { console.log(element); // 👉️ c, b, a });

The first step is to convert the
Set
object to an array.

Next, we use the
Array.reverse
method to reverse the array.

The reverse() method reverses the array in place and returns the result.

Then, we can use the
Array.forEach
method to iterate over the reversed array.

The function we passed to the forEach method gets called with each element of
the array.

另一种方法是使用
扩展语法 (…)
将 转换
Set为数组。

索引.js
const set1 = new Set(['a', 'b', 'c']); [...set1].reverse().forEach(element => { console.log(element); // 👉️ c, b, a });

此代码示例实现了相同的结果,但是,这次我们使用扩展语法 (…) 将 的值解压缩Set到一个数组中。

该方法的替代forEach方法是使用
for…of
循环遍历反转数组。

索引.js
const set1 = new Set(['a', 'b', 'c']); const reversedArr = [...set1].reverse(); for (const element of reversedArr) { console.log(element); // c, b, a }

循环用于迭代可for...of迭代对象,例如数组、字符串、SetsMaps等。