考虑这个数组。
[1, 2, 2, 2, 3, 4, 4, 5]
我想按某个元素值存在多少次的顺序对此数组进行排序。
因此,在上面的情况下,值2
存在三次,因此这些应该首先出现。接下来是4
的两个实例,然后是1, 3, 5
。
[2, 2, 2, 4, 4, 1, 3, 5]
答案 0 :(得分:2)
好的只有提示。获取一个hashmap,对每个项目进行计数,当你对每个元素进行计数时,相应地对它进行排序并重新生成数组。
答案 1 :(得分:2)
以下是我可能会这样做的方式:
循环遍历数组,构建一个地图(现在只是一个普通的对象,因为我们还没有ES6's Map
),其中包含数字的属性名称(2
等等) ,其中该属性的值是该数字出现在该数组中的次数。 (例如,在循环期间,如果我们之前看过那个数字,请在值中加一个;如果我们没有,请从1开始。)
一旦我有了地图,我就会使用Array#sort
进行排序,给它一个比较器函数,它根据赋予函数的两个值中的每一个返回结果已经出现了。 (如果我们最终将2的计数与2的计数进行比较,那么结果将是0
并且它们将被视为偶数。)