countBy (Lodash 互換性)
es-toolkitのcountByを使用してください
この countBy 関数は、複雑な変換関数処理と型変換により、動作が遅くなります。
代わりに、より高速で現代的な es-toolkit の countBy を使用してください。
配列やオブジェクトの要素を条件に従って分類し、各分類の個数を数えます。
typescript
const counts = countBy(collection, iteratee);参照
countBy(collection, iteratee?)
配列やオブジェクトの各要素をある基準でグループ化し、各グループに何個の要素があるかを数えたい場合、countBy を使用してください。反復関数が返す値がキーになり、そのキーに該当する要素の個数が値になります。
typescript
import { countBy } from 'es-toolkit/compat';
// 数値を小数点以下切り捨てでグループ化
countBy([6.1, 4.2, 6.3], Math.floor);
// Returns: { '4': 1, '6': 2 }
// 文字列を長さでグループ化
countBy(['one', 'two', 'three'], 'length');
// Returns: { '3': 2, '5': 1 }
// ユーザーを年齢代でグループ化
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 35 },
{ name: 'Charlie', age: 25 },
];
countBy(users, user => Math.floor(user.age / 10) * 10);
// Returns: { '20': 2, '30': 1 }オブジェクトも処理できます。
typescript
import { countBy } from 'es-toolkit/compat';
// オブジェクトの値を型で分類
const obj = { a: 1, b: 'string', c: 2, d: 'text' };
countBy(obj, value => typeof value);
// Returns: { 'number': 2, 'string': 2 }反復関数なしで使用すると、値そのものでグループ化されます。
typescript
import { countBy } from 'es-toolkit/compat';
// 値そのものでグループ化
countBy([1, 2, 1, 3, 2, 1]);
// Returns: { '1': 3, '2': 2, '3': 1 }
// 真偽値でグループ化
countBy([true, false, true, true]);
// Returns: { 'true': 3, 'false': 1 }null や undefined のコレクションは空のオブジェクトを返します。
typescript
import { countBy } from 'es-toolkit/compat';
countBy(null);
// Returns: {}
countBy(undefined);
// Returns: {}パラメータ
collection(ArrayLike<T> | object | null | undefined): 処理する配列またはオブジェクトです。iteratee(ValueIteratee<T>, 選択): 各要素をグループ化する基準を決定する関数です。関数、プロパティ名、または部分オブジェクトを使用できます。
戻り値
(Record<string, number>): 各グループのキーとそのグループの要素数を持つオブジェクトを返します。

