javascript - 如何获取数组中重复次数最多的值
问题描述
我在简单的运动中挣扎了大约 2 个小时。我在 Stack Overflow 上看到了与此类似的问题,但我不明白所有这些奇怪的符号怎么可能,或者为什么以及为什么我必须使用对象来获得结果。
我的问题是如何从重复次数最多的数组中获取值并计算它在数组中的次数。
我试过跟随。这段代码什么都不做。这是我的尝试号 292827,但每次我想放弃时,我都有另一个想法如何解决它,但它越来越糟糕。我只是在寻找比将对象传播到原子分子和其他一些外星语法更简单的语法。
var arr = ['h', 'a', 'h', 'p', 'h'];
function findDuplicate(arr) {
arr.sort();
let count = 0;
let current;
for (var i = 0; i < arr.length; i++) {
if (arr[i] === arr[i + 1]) {
current = arr[i];
count++;
} else {
current = arr[i]
}
return current + count
}
}
console.log(findDuplicate(arr))
解决方案
首先初始化current
数组的第一个元素。然后循环剩余的元素。
当当前元素与 相同时current
,递增计数器。当它不同时,重置count
和current
。
为了获得最高计数,您需要另一个变量来保存它。每当您重置count
时,请检查它是否高于最高值并替换它。
并将return
语句移出循环。
var arr = ['h', 'a', 'h', 'p', 'h'];
function findDuplicate(arr) {
arr.sort();
let count = 1;
let current = arr[1];
let maxcount = 1;
let maxelement = current;
for (var i = 1; i < arr.length; i++) {
if (arr[i] === current) {
count++;
} else {
if (count > maxcount) {
maxcount = count;
maxelement = current;
}
current = arr[i];
count = 1;
}
}
// in case the last element has the highest count
if (count > maxcount) {
maxcount = count;
maxelement = current;
}
return maxelement + maxcount;
}
console.log(findDuplicate(arr))
推荐阅读
- java - 为什么即使我导入 java.util.InputMisMatchException 尝试/捕获 InputMisMatchException 也不起作用?
- javascript - 我如何将particle.js 与react 一起使用
- html - 如何将图像作为链接独立于作为按钮的链接?
- php - API 平台中的自定义操作不会自动装配实体
- php - Dropzone没有将文件上传到本地文件夹
- python - 为什么子类访问超类的属性,尽管当该属性被声明为私有时,它有自己的同名属性?
- aws-cli - AWS CLI S3 同步存储桶并保留权限
- react-native - TouchableHighlight 未被禁用
- azure - Azure CLI - 运行脚本文件
- javascript - 如何在nodeJS和knexJS中重复数组长度的id