Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
376 views
in Technique[技术] by (71.8m points)

javascript或jquery 如何按照要求处理下面数组并输出

现有数组[1,1,2,2,3,3,4,4,5,5] 如何通过js 变成[1,2,3,4,5,1,2,3,4,5]


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
[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
},[])

image.png
扩展到其他规则下也是对的
image.png
image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

63 comments

56.5k users

...