统计数组中元素出现的次数

题目描述

题目描述

我的代码

function deleteNth(arr,n){
  // ...
  var re = [];
  var arr1 = {};
  
  for(i=0; i<arr.length; i++){
    !arr1[arr[i]] ? arr1[arr[i]] = 1 : arr1[arr[i]] += 1;
    if(arr1[arr[i]] <= n)
      re.push(arr[i]);
  }
  return re;
}

Clever

function deleteNth(arr,x){
    var obj = {};
    return arr.filter(function(number){
        obj[number] = obj[number] ? obj[number] + 1 : 1
        return obj[number] <= x
    });
}

Key

  • 定义统计数组中每个元素出现的次数的变量应该是个对象:var arr1 = {}; 而不是一个数组 var arr1 = []; (这样每个元素对应一个出现次数,之后就可检索出,出现某个次数的元素)

  • 给一个数组(var re = [];)赋值:不是var re = [0];而是应该用.push()方法,re.push(arr[i]);

-------------完-------------