52

繰り返し値を持つ配列があります。特定の値の出現回数を見つけたいと思います。

たとえば、 so: として定義された配列がvar dataset = [2,2,4,2,6,4,7,8];ある場合、配列内の特定の値の出現回数を見つけたいとします。つまり、プログラムは、 value が 3 回出現した場合、 value2が 1 回出現した場合などを示す必要があります6

これを行うための最も慣用的/エレガントな方法は何ですか?

4

11 に答える 11

42
array.filter(c => c === searchvalue).length;
于 2016-08-25T08:19:50.120 に答える
0

この方法で実行しようとすると、次のようなエラーが発生する可能性があります。

array.reduce((acc, arr) => acc + (arr.label === 'foo'), 0); // Operator '+' cannot be applied to type 'boolean'.

1つの解決策は、このようにすることです

array = [
    { id: 1, label: 'foo' },
    { id: 2, label: 'bar' },
    { id: 3, label: 'foo' },
    { id: 4, label: 'bar' },
    { id: 5, label: 'foo' }
]

array.reduce((acc, arr) => acc + (arr.label === 'foo' ? 1 : 0), 0); // result: 3
于 2021-11-04T14:45:17.083 に答える
0

まず、線形検索を使用することで、ブルート フォース ソリューションを使用できます。

public int LinearSearchcount(int[] A, int data){
  int count=0;
  for(int i=0;i<A.length;i++) {
    if(A[i]==data) count++;
  }
  return count;
}

ただし、これを使用すると、時間の複雑さが O(n) になります。しかし、バイナリ検索を使用することで、複雑さを改善できます。

于 2018-05-10T08:41:47.247 に答える