求一个简洁的顺子提取算法

一副牌13张,不含大小王,有不同花色的牌,有重复的牌。顺子的最大数量是5张牌,10 J Q K A是顺子, A2345也是顺子,自己实现了一个for嵌套较多的,应该是有比较简洁的实现,求一个简洁的提取顺子的二维数组算法。

我记得以前我是这么做的:
Poker:{
type: 0, // 0~4代表花色方块-黑桃,4代表王
value: 0~14, // 0-3 ,11-A,12-2,13-小王,14-大王
index: 0~56, // 牌从方块3~黑桃2,小王,大王排列
}
显示排列始终通过index,
判断顺子:value是否N张连续
判断对子/三条/炸弹: value是否相等
判断顺子大小:index取双方最左侧比大小
判断花色: type比大小

我是这么来的:
Poker : number
kHeart3 = 0x01, 红桃3,以此类推 kClubs2 = 0x3D为方片2;
扑克按去除花色后的值升序;
取底4位为扑克值Value, 高四位为花色;
先根据扑克张数判断可能的类型,然后再去判断Value;
顺子 : 扑克张数大于5,根据Value值判断是否为顺子,2再单独判断一次。