導入
現場でよく遭遇するのが、データの集約やフィルタリングの処理です。特に、複数の条件を満たすデータを効率的に抽出する必要がある場合、適切なアルゴリズムの選択が重要になります。この練習問題編では、JavaScriptを使って特定の条件に基づくデータ処理のアルゴリズムを学び、実務で役立つスキルを磨いていきます。
教科書レベルの解説(アルゴリズム)
重要な概念の整理
データのフィルタリングや集約は、ビジネスロジックの中心をなすことが多いです。例えば、ユーザーの行動データを分析する際、特定の条件を満たすユーザー群を抽出することが求められます。ここでのポイントは、条件をどのように効率的に設定し、データを操作するかです。一般的なループ処理や条件分岐を使うだけではなく、より効率的な方法を考えることが求められます。
コード例(JavaScript)
// ユーザーのデータをフィルタリングする関数
function filterUsers(users, criteria) {
return users.filter(user => {
return Object.keys(criteria).every(key => user[key] === criteria[key]);
});
}
// サンプルデータ
const users = [
{ name: 'Alice', age: 25, country: 'USA' },
{ name: 'Bob', age: 30, country: 'Canada' },
{ name: 'Charlie', age: 35, country: 'USA' },
{ name: 'David', age: 25, country: 'Canada' }
];
// フィルタ条件
const criteria = { age: 25, country: 'USA' };
// フィルタリング実行
const filteredUsers = filterUsers(users, criteria);
console.log(filteredUsers);
コードの行ごとの解説
function filterUsers(users, criteria) {– ユーザー配列とフィルタ条件を受け取る関数を定義。return users.filter(user => {– 配列のフィルタリングを開始。return Object.keys(criteria).every(key => user[key] === criteria[key]);– 各条件に対して、ユーザーがその条件を満たすかをチェック。const users = [...];– サンプルデータを定義。const filteredUsers = filterUsers(users, criteria);– 定義した関数を呼び出し、フィルタリング結果を取得。
練習問題編
以下の練習問題に取り組んでみてください。各問題には模範解答と解説も用意しています。
-
問題1: 年齢が30歳以上のユーザーをフィルタリングする関数を作成してください。
function filterByAge(users) { return users.filter(user => user.age >= 30); } -
問題2: カナダに住むユーザーをフィルタリングする関数を作成してください。
function filterByCountry(users) { return users.filter(user => user.country === 'Canada'); } -
問題3: 年齢が25歳以上かつアメリカに住むユーザーをフィルタリングする関数を作成してください。
function filterByAgeAndCountry(users) { return users.filter(user => user.age >= 25 && user.country === 'USA'); } -
問題4: 年齢が30歳以下のユーザーの名前を取得する関数を作成してください。
function getNamesUnder30(users) { return users.filter(user => user.age <= 30).map(user => user.name); }
まとめ
- フィルタリング処理は、ビジネスロジックにおいて非常に重要な役割を果たす。
- 条件に基づくデータ操作は、適切なアルゴリズムを選択することで効率化できる。
- 練習問題を通じて、実務に即したスキルを身につけることができる。