神戸プログラミングアカデミーのブログ

「未経験から」「スキルアップ」「起業を目指す」無料で学べる神戸のプログラミング学校&学習コミュニティ

Array.filter()関数を自作してみよう

配列から条件を満たす要素のみに絞り込んだ配列を返す関数 filter(array, callback) を作成せよ

  • 作成する関数の第1引数は絞り込み前の配列、第2引数は評価関数とし、返り値を絞り込んだ後の配列とする
  • 使っていいメソッドはArray.pushのみとする
  • コールバックを利用し汎用的な関数にすること
  • 絞り込み条件は10以上30以下とする

実行コマンド

node main.js 34 27 94 12 30 14 25

出力

[ 27, 12, 30, 14, 25 ]

解答例

function filter(array, callback) {
  const ret = []
  for (let i = 0; i < array.length; i++) {
    if (callback(array[i])) {
      ret.push(array[i])
    }
  }
  return ret
}
const args = process.argv.slice(2)
// 評価関数
const eval = function (a) {
  return a >= 10 && a <= 30
}
const result = filter(args, eval)
console.log(result)

// アロー関数を使うと
// const result = filter(args, (a) => {
//   return a >= 10 && a <= 30
// })