首页 > 解决方案 > 如何获取数组中重复次数最多的值

问题描述

我在简单的运动中挣扎了大约 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))

标签: javascriptarrays

解决方案


首先初始化current数组的第一个元素。然后循环剩余的元素。

当当前元素与 相同时current,递增计数器。当它不同时,重置countcurrent

为了获得最高计数,您需要另一个变量来保存它。每当您重置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))


推荐阅读