Javascript JS中数组元素的随机子集

Javascript JS中数组元素的随机子集,javascript,arrays,p5.js,Javascript,Arrays,P5.js,我试图从数组中随机选择一组三个唯一的元素。我是JS新手,我经常被引用行为绊倒,而Python是我最好的语言。我想这也在这里发生。这是P5.JS 以下是我的尝试: var points = [[0,0],[.5*w,0],[w,0], [0,.5*h],[.5*w,.5*h],[w,.5*h], [0,h],[.5*w,h],[w,h]]; var vert = []; var start = int(random(0,8)); vert.push(points[start].slice());

我试图从数组中随机选择一组三个唯一的元素。我是JS新手,我经常被引用行为绊倒,而Python是我最好的语言。我想这也在这里发生。这是P5.JS

以下是我的尝试:

var points = [[0,0],[.5*w,0],[w,0],
[0,.5*h],[.5*w,.5*h],[w,.5*h],
[0,h],[.5*w,h],[w,h]];

var vert = [];
var start = int(random(0,8));
vert.push(points[start].slice());
points.splice(start,1);

var middle = int(random(0,7));
vert.push(points[middle].slice());
points.splice(middle,1);

var end = int(random(0,6));
vert.push(points[end].slice());
当我查看vert的内容时,很明显我没有得到我期望的元素。特别是,我从未得到原始数组中最后三个元素中的任何一个

如上所述,int和random是p5.js函数,很好。通过删除push语句中的.slice实例,解决了此问题:

var vert = [];

var start = int(random(0,8));
vert.push(points[start]);
points.splice(start,1);

var middle = int(random(0,7));
vert.push(points[middle]);
points.splice(middle,1);

var end = int(random(0,6));
vert.push(points[end]);

你能准确地解释一下你想用切片和拼接函数做什么吗?你能发表一篇文章来说明这个问题吗?打印语句或其他东西将有助于显示您期望的内容和正在发生的事情。使用“拼接”,我将删除刚刚随机选择的元素,这样我就不会再选择它两次。使用“slice”,我将创建这些元素的新副本,因为如果没有它,当元素从数组中移除时,引用将发生变化。这就是为什么我从来没有得到最后三个元素。等等,你已经弄明白了吗?如果是这样的话,请在下面贴一个答案,这样这个问题就不需要回答了。