extension SequenceType { typealias E = Generator.Element func groupBy<K: Hashable>(key: E -> K) -> [[E]] { return self.reduce([:]) { (var r: [K: [E]], x) in let k = key(x) r[k] = (r[k] ?? []) + [x] return r }.map { _, v in v } } } sampleArray.groupBy { "\($0.y)-\($0.m)" } var を parameter で使う以上の問題があります。 それは、配列を使い捨てていること。(r[k] ?? []) + [x]するたびに、古いr[k]に入っていたArrayが捨てられています。 「これってパフォーマンスに響くよねえ」と脊髄反射でベン