AE表达式教程 - 用集合set生成不重复随机数
之前根据小伙伴的需求,录制了个生成不重复随机数的视频。
表达式稍微有点长,有点复杂。
昨天看到集合set,就试了一下,用集合生成不重复的随机数似乎更简单。
注意:在使用set集合之前,请先将表达式引擎改成javascript。
set集合
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
上面定义了一个集合,这个集合里有两个4,结果只会显示一个4,重复的就会自动被删除。

我们就可以用这个特性来生成不重复的随机数。
假设我们要生成一个4位不重复随机数,表达式可以这样写:
但是这样会出现,随机数1跟其他随机数相同的情况,比如随机数1跟随机数2相同,这样就只剩下3个随机数了。
我们可以多给set里添加几个随机数,然后从其中取出4个来。
set的结果是个数组,用数组的slice()方法可以截取需要的位数。
最终随机数的表达式如下:
集合里不一定全放随机数,也可以放一些数字。
这样就能得到不重复的随机数:

这段表达式就没什么难度了,就是往集合里放几个随机数,然后从里面取出4个来。
这些是es6的写法,关于es6,有很多教程,有兴趣的可以去看看。
附上一个es6学习链接:
https://es6.ruanyifeng.com/?search=map&x=0&y=0#docs/set-map