Javascript 创建一个函数,该函数在现有数组的基础上创建一个新数组,该数组的元素数量较少或相等,并且没有重复
我有这样一个数组:Javascript 创建一个函数,该函数在现有数组的基础上创建一个新数组,该数组的元素数量较少或相等,并且没有重复,javascript,arrays,Javascript,Arrays,我有这样一个数组: var arr = [0,1,2,3,4,5] 我需要编写一个函数,它将生成一个新的随机长度数组(但小于或等于arr.length),并且不会生成重复的数字。比如: var arrNew = [2,4,0] 但不是 var arrNew = [2,4,2,2,0] 我想到了这个,但它会产生重复的元素: var list = [0,1,2,3,4,5]; var getRandomNumberRange = function (min, max) { return
var arr = [0,1,2,3,4,5]
我需要编写一个函数,它将生成一个新的随机长度数组(但小于或等于arr.length),并且不会生成重复的数字。比如:
var arrNew = [2,4,0]
但不是
var arrNew = [2,4,2,2,0]
我想到了这个,但它会产生重复的元素:
var list = [0,1,2,3,4,5];
var getRandomNumberRange = function (min, max) {
return Math.floor(Math.random() * (max - min) + min);
};
var getRandomArr = function (list) {
var arr = new Array(getRandomNumberRange(1, 6));
for (var i = 0; i < arr.length; i++) {
arr[i] = list[getRandomNumber(list.length)];
}
return arr;
};
var列表=[0,1,2,3,4,5];
var getRandomNumberRange=函数(最小值、最大值){
返回Math.floor(Math.random()*(max-min)+min);
};
var getRandomArr=函数(列表){
var arr=新数组(getRandomNumberArrange(1,6));
对于(变量i=0;i
谢谢你的帮助 将数据从数组数据结构移动到集合可以解决此问题。
集合不接受重复的值。
有关javascript中设置的更多信息,请参见MDN
要将集合转换回数组,请使用
array.from()
避免在最终数组中重复,只需使用
将结果保存在集合内,如下所示:
arr = Array.from(new Set(<result array>));
arr=Array.from(new Set());
注意:没有什么可以阻止此代码将空数组作为随机数组提供给您
var arr=[0,1,2,3,4,5,36,15,25]
函数生成器ArrayFromSeed(arr){
//创建一个新集合以跟踪我们使用的值
const used=新集合();
//生成一个新数组。
常数newArr=[];
//我们今天使用的随机长度是多少?
const newLength=getRandomNumber(arr.length);
//虽然我们的新数组仍然小于新随机长度,但我们运行这段代码
while(newArr.length log(generateRandomArrayFromSeed(arr))代码>这是否回答了您的问题?getRandomNumber函数在哪里?