[1,1,2,2,3,3,4,4,5,5]
[1,2,3,4,5,1,2,3,4,5]
你的值对照关系,转换成下标对照如下
[0,1,2,3,4,5,6,7,8,9]
[0,5,1,6,2,7,3,8,4,9]
由上面的似乎可以得出奇数偶数位递增,我们扩展到3找寻规律。
[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5]
[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]
[0,5,10,1,6,11,...]
从这里我们似乎就找到了两个东西,这俩个东西是描述我们数组的。
// 独立个数
var size = new Set([1,2,3,4,5,1,2,3,4,5]).size
// 独立个数重复次数
var repeatSize = arr.length / size
然后就是规律生成了
var arr = [1,1,2,2,3,3,4,4,5,5]
var size = new Set(arr).size
var repeatSize = arr.length / size
arr.reduce((s,n,idx,arr)=>{
s[(idx % repeatSize) * size + (idx / repeatSize)>>0] = n
return s
},[])
扩展到其他规则下也是对的