如何获取一个数组中的相同元素的个数

就是有一个数组,例如var numArr = ["A", "C", "B", "A", "C", "D", "A", "C"],如何筛选出相同的元素,还有相同元素的个数

阅读 18.5k
5 个回答

元素是任意值

["1", "2", 2, 0, -0, NaN, NaN, [], [], {}, {}, undefined, , , null].reduce((m, k) => {
    return m.set(k, (m.get(k) || 0) + 1);
}, new Map());

遵循以下规则:

  • NaN = NaN

  • +0 = -0

  • "1" != 1

  • {} != {}

  • [] != []

  • undefined != null

  • 空元素不计

clipboard.png


元素是字符串

["A","B","C","B","A"].reduce((o, k) => {
    k in o ? o[k]++ : (o[k] = 1);
    return o;
},{});

clipboard.png

function checkArray(para, arr) {
    let processArr = arr.filter(function(value) {
        return value == para;
    });

    return processArr.length;  // 这里返回数组长度或者相应处理
}

console.log(checkArray(1, numArr));
var obj={},arr=["A", "C", "B", "A", "C", "D", "A", "C","B"]
//for
for(var i=0,len=arr.length;i<len;i++){
    if(obj[arr[i]]){
        obj[arr[i]]++
    }
    else{
    obj[arr[i]]=1
    }
}
//forEach
arr.forEach(function(item,i){obj[arr[i]]?obj[arr[i]]++:obj[arr[i]]=1})

简单的循环不就出来了

["A", "C", "B", "A", "C", "D", "A", "C","B"].reduce((r,v)=>{
  r[0].has(v)?r[1][v]?r[1][v]++:r[1][v]=2:r[0].add(v); 
  return r;
},[new Set,{}])[1]
// {A: 3, C: 3, B: 2}

是这种效果么?选出重复(出现次数大于等于2)的元素并统计每个重复元素出现的次数?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题