按数值对 Javascript Map 进行排序

问题描述 投票:0回答:1

如果

kv
是 Javascript
Map
对象,我如何按其数值对它进行排序?

例如,当

kv
是一个计数器时,这是一个常见的模式,我们需要看到计数最高的前n个项目。

这不同于Is it possible to sort a ES6 map object?,这是词法排序。

javascript node.js sorting collections key-value
1个回答
0
投票

可以在

Array.prototype.sort()
函数中传入第二个参数

你的案例的一个例子是:

[...kv.values()].sort((a, b) => a - b);

说明:

  1. 您使用
    Map.prototype.values()
    函数获得 Map 对象的值迭代器
  2. 然后你使用
    [...iterator]
    模式传播它以将其转换为数组
  3. 最后使用
    Array.prototype.sort()
    的排序功能。第二个参数允许你传入一个比较函数,其中:
原来的顺序
compareFn(a, b)
返回值
排序
> 0
a
之后排序
b
,例如
[b, a]
< 0
a
之前排序
b
,例如
[a, b]
=== 0
保留
a
b
© www.soinside.com 2019 - 2024. All rights reserved.