ありがとうございます
なんとか目的の処理は実装できました
ただd91Ax+2Mさんのアドバイスはおそらく高階関数を使えということですよね?