Javascript 有N个(数组中的出现次数)和一个数组,如何获取数组中出现次数为N的元素?

Javascript 有N个(数组中的出现次数)和一个数组,如何获取数组中出现次数为N的元素?,javascript,arrays,list,data-structures,Javascript,Arrays,List,Data Structures,例如N=2和arr=[2,2,3,0,1,5,5] 如何从阵列中获取2和5 另一个例子是 N=1 arr=[20,37,20,21] 我应该得到37和27。对数组进行排序,选择连续的元素并计数: const result = []; let count = 0, previous = null; for(const el of arr.sort()) { if(el === previous) { count++; } else { if(count === N) res

例如N=2和arr=[2,2,3,0,1,5,5]

如何从阵列中获取2和5

另一个例子是 N=1 arr=[20,37,20,21]


我应该得到37和27。

对数组进行排序,选择连续的元素并计数:

const result = [];
let count = 0, previous = null;
for(const el of arr.sort()) {
  if(el === previous) {
    count++;
  } else {
    if(count === N) result.push(N);
    count = 0;
    previous = el;
  }
}

对数组进行排序,选择连续元素并计数:

const result = [];
let count = 0, previous = null;
for(const el of arr.sort()) {
  if(el === previous) {
    count++;
  } else {
    if(count === N) result.push(N);
    count = 0;
    previous = el;
  }
}

您可以迭代数组以创建包含每个值的计数的字典,然后找到计数=N的位置

var arr =  [2, 2, 3, 0, 1, 5, 5];
var N = 2;
var cnt = {};

for (var i = 0; i < arr.length; i++) {
  var num = arr[i];
  cnt[num] = cnt[num] ? cnt[num] + 1 : 1;
}


for(var it in cnt) {
   if(cnt[it] == N) {
       console.log(it);
   }
}
var-arr=[2,2,3,0,1,5,5];
var N=2;
var cnt={};
对于(变量i=0;i
您可以迭代数组以创建包含每个值的计数的字典,然后找到计数=N的位置

var arr =  [2, 2, 3, 0, 1, 5, 5];
var N = 2;
var cnt = {};

for (var i = 0; i < arr.length; i++) {
  var num = arr[i];
  cnt[num] = cnt[num] ? cnt[num] + 1 : 1;
}


for(var it in cnt) {
   if(cnt[it] == N) {
       console.log(it);
   }
}
var-arr=[2,2,3,0,1,5,5];
var N=2;
var cnt={};
对于(变量i=0;i
您可以将数字计数到计数对象中,然后只需过滤:

const arr=[2,2,3,0,1,5,5]
常数n=2
/*计数将是类似于{2:2,3:1,0:1}的对象*/
让计数=arr.reduce((a,c)=>(a[c]=a[c]?a[c]+1:1,a),{})
/*只需返回对应值为n的键*/
让res=Object.keys(counts).filter(k=>counts[k]==n)

console.log(res)
您可以将数字计数到计数对象中,然后只需过滤:

const arr=[2,2,3,0,1,5,5]
常数n=2
/*计数将是类似于{2:2,3:1,0:1}的对象*/
让计数=arr.reduce((a,c)=>(a[c]=a[c]?a[c]+1:1,a),{})
/*只需返回对应值为n的键*/
让res=Object.keys(counts).filter(k=>counts[k]==n)

console.log(res)
只要订购它,当同一个符号出现时,从乞讨和计数开始,然后在不同的符号上将该数字设为空?排序是
n log n
,对我来说似乎很好。谢谢回复!本练习要求明确不对数组排序。有关如何计数重复项,请参阅。然后你可以循环这个过程,找到所有拥有你想要的计数的。然后创建一个计数器数组,遍历你的原始数组并增加它们。只需对它排序,当相同的符号出现并且在不同的符号上为空时,从乞讨和计数开始?排序是
n log n
,对我来说似乎很好。谢谢回复!本练习要求明确不对数组排序。有关如何计数重复项,请参阅。然后你可以循环这个,找到所有你想要的计数器,然后创建一个计数器数组,遍历你原来的数组并增加它们。