代码之家  ›  专栏  ›  技术社区  ›  krish

从数组[duplicate]中获取重复的元素计数

  •  0
  • krish  · 技术社区  · 5 年前

    我写了一个从数组中删除重复项的脚本,

    var array=['windows','linux','unix','windows','unix'];
    function getUnique(array){
    
            var uniqueArray = [];
    
            for(i=0; i < array.length; i++){
                if(uniqueArray.indexOf(array[i]) === -1) {
                    uniqueArray.push(array[i]);
                }
            }
            return uniqueArray;
        }
    

    工作正常。现在我想从一个数组中得到重复数,比如,

    2个窗口 1 linux系统 2 unix系统

    这样地。有没有办法得到这样的结果?

    有人能提出一些建议吗? 谢谢!

    2 回复  |  直到 5 年前
        1
  •  1
  •   Syed mohamed aladeen Boldewyn    5 年前

    尝试这样,使用forEach循环数组并增加计数。

    var duplicateCount = {};
    var array=['windows','linux','unix','windows','unix'];
    array.forEach(function(x) { duplicateCount[x] = (duplicateCount[x] || 0)+1; });
    
    console.log(counts);
        2
  •  0
  •   Sohail Ashraf    5 年前

    你可以用内置的 reduce 函数获取计数。

    var array = ['windows', 'linux', 'unix', 'windows', 'unix'];
    let count = array.reduce((acc, val) => {
      acc[val] = (acc[val] || 0)  + 1
      return acc;
    }, {});
    console.log(count);