Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建一个函数,该函数在现有数组的基础上创建一个新数组,该数组的元素数量较少或相等,并且没有重复_Javascript_Arrays - Fatal编程技术网

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.lengthlog(generateRandomArrayFromSeed(arr))这是否回答了您的问题?getRandomNumber函数在哪里?