在多个元素实例之后对数组进行排序

时间:2014-12-08 12:53:05

标签: javascript

考虑这个数组。

[1, 2, 2, 2, 3, 4, 4, 5] 

我想按某个元素值存在多少次的顺序对此数组进行排序。 因此,在上面的情况下,值2存在三次,因此这些应该首先出现。接下来是4的两个实例,然后是1, 3, 5

[2, 2, 2, 4, 4, 1, 3, 5] 

2 个答案:

答案 0 :(得分:2)

好的只有提示。获取一个hashmap,对每个项目进行计数,当你对每个元素进行计数时,相应地对它进行排序并重新生成数组。

答案 1 :(得分:2)

以下是我可能会这样做的方式:

  1. 循环遍历数组,构建一个地图(现在只是一个普通的对象,因为我们还没有ES6's Map),其中包含数字的属性名称(2等等) ,其中该属性的值是该数字出现在该数组中的次数。 (例如,在循环期间,如果我们之前看过那个数字,请在值中加一个;如果我们没有,请从1开始。)

  2. 一旦我有了地图,我就会使用Array#sort进行排序,给它一个比较器函数,它根据赋予函数的两个值中的每一个返回结果已经出现了。 (如果我们最终将2的计数与2的计数进行比较,那么结果将是0并且它们将被视为偶数。)