es6数组 重复数量排序
ES6是JavaScript的一种新的标准,在ES6中,数组也得到了很多新的特性。其中,数组重复数量排序就是一种非常实用的新特性。
在ES6中,我们可以通过新的Array方法countBy对数组中的元素进行统计,并得到每个元素出现的次数。接下来,我们可以通过sort方法对这些元素按照出现次数进行排序,从而得到一个按照重复次数排序的数组。
下面,让我们来看一下具体的实现方法。
1. 数组统计
首先,我们需要通过ES6中的Array方法countBy对数组中的元素进行统计,并得到每个元素出现的次数。
```javascript
const arr = [1, 2, 3, 2, 1, 1, 4, 5, 5, 4, 5, 5];
const countObj = duce((acc, curr) => {
acc[curr] ? acc[curr]++ : (acc[curr] = 1);
return acc;
}, {});
```
在上面的代码中,我们使用了reduce来遍历数组中的所有元素。在每次遍历时,将当前元素作为属性,如果该属性已经存在,则将其对应的值加1,否则将其加入到对象中,并将其值设置为1。这样,我们就可以得到一个包含了每个元素出现次数的对象countObj。
2. 数组排序
接下来,我们可以通过sort方法对这些元素按照出现次数进行排序。
```javascript
const sortedArr = ies(countObj).sort(
(a, b) => b[1] - a[1] || a[0] - b[0]
);
```
在上面的代码中,我们首先使用ies将countObj转换成一个数组,其中每个元素都是一个包含key-value的数组。然后,我们使用sort方法对这个数组进行排序。在排序时,我们首先按照每个元素出现的次数进行排序,如果出现次数相同,则按照元素的值进行排序。
3. 完整代码
最后,让我们来看一下完整的代码实现。
```javascript
const arr = [1, 2, 3, 2, 1, 1, 4, 5, 5, 4, 5, 5];
const countObj = duce((acc, curr) => {
acc[curr] ? acc[curr]++ : (acc[curr] = 1);
return acc;
es6新特性面试}, {});
const sortedArr = ies(countObj).sort(
(a, b) => b[1] - a[1] || a[0] - b[0]
);
console.log(sortedArr);
```
在上面的代码中,我们首先定义了一个数组arr,然后使用reduce方法得到了一个统计每个元素出现次数的对象countObj。接下来,我们使用ies将countObj转换成一个数组,
并使用sort方法对这个数组进行排序,得到了按照重复次数排序的数组sortedArr。
4. 总结
通过以上的代码实现,我们可以看到,在ES6中,数组重复数量排序变得非常简单。首先,我们通过countBy方法得到了每个元素出现次数的统计对象,然后通过sort方法对这个对象转换成的数组进行排序,从而得到了一个按照重复次数排序的数组。这种方法非常简单易懂,而且可以应用到很多实际的开发场景中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论