【问题标题】:count occurence of elements in an array [duplicate]计算数组中元素的出现次数[重复]
【发布时间】:2018-09-15 00:25:00
【问题描述】:

你好我想问一下如何在数组上找到相同的数字或字符串 输出必须是数字或字符串

示例 var arr = [1,2,4,4,5,1,1,1,8,9]

我们需要使用循环、函数吗?

【问题讨论】:

  • 你想知道数组中重复项的数量吗?
  • 是的最一样的数
  • 您能否准确说明您是否需要使用纯原生 js,或者是否可以为此使用外部库?
  • 我只需要纯js,我还在学习,有点困惑什么时候用循环,什么时候用函数,
  • 有用的文章,谢谢

标签: javascript arrays function for-loop


【解决方案1】:

您可以创建频率阵列。诚然,这可能不是最有效的方法。 您可以为此使用字典。我希望你知道什么是字典。

function fun(arr) {
     var sval;
     var dict = new Object();
     for (var val in arr) {
            sval = string(val) 
            if(dict[sval] === undefined) {
                  dict[sval] = 1;
            }
            else {
                  dict[sval]++;
            }
      }
      var max_count = -5;
      var max_count_num;
      for (var key in dict) {
             if (max_count < dict[key]) {
                    max_count = dict[key];
                    max_count_num = Number(key);
                  }
      }
}

首先您创建一个对象,该对象用作我们的字典,然后您遍历数组。如果没有找到键,因此未定义,那么我们创建这样的条目,否则我们将计数值增加 1。

然后我们遍历字典试图找到具有最大值的数字,因此最大计数。

我希望这是您正在寻找的。 请修复我的代码中的任何错误,我对 JavaScript 有点生疏了。

【讨论】:

    【解决方案2】:

    对数组中的每一项进行迭代(i 索引),并为数组的其余部分(j 索引,j = i+1)迭代每一项,并为当前项的任何重复创建一个计数。

    function maxRepeated(arr) {
    
      // count global to keep the max value count
      const maxRepeat = {
        value: 0,
        times: 0
      };
      for (var i = 0; i < arr.length - 1; i++) {
        var maxLocal = 1; // to count ar[i] item repetitions
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[j] == arr[i]) maxLocal++;
          console.log( maxLocal )
          console.log( "I " + i + " arr[i] " + arr[i] )
          
        }
    
        // check if maxLocal is great than max global
        if (maxLocal > maxRepeat.times) {
          maxRepeat.value = arr[i];
          maxRepeat.times = maxLocal;
        }
      }
      return maxRepeat;
    }
    const ar = [1, 2, 3, 1, 3, 5, 1, 1, 1, 5, 4, 3, 3, 2, 2, 3];
    const b = ["LUNA", "LUNA", "JS", "JS", "JS"];
    
    //console.log(maxRepeated(ar))
    console.log(maxRepeated(b))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 2022-11-30
      • 2016-04-21
      • 1970-01-01
      • 2014-09-30
      • 2019-09-24
      相关资源
      最近更新 更多