Javascript 从数组中获取唯一的随机项

Javascript 从数组中获取唯一的随机项,javascript,arrays,random,Javascript,Arrays,Random,为了寻找解决这个问题的方法,我试着按照目前为止提出的几个步骤进行操作,但都没有成功 我想从所选数组中选择随机数目的随机唯一项。为此,我编写了以下函数,它总是返回重复项而不是唯一项: function getRandomItemsCombination(min, max, sourceArray){ var items = {}; //var itemsCount = Math.floor(Math.random() * (max - min + 1)) + min; va

为了寻找解决这个问题的方法,我试着按照目前为止提出的几个步骤进行操作,但都没有成功

我想从所选数组中选择随机数目的随机唯一项。为此,我编写了以下函数,它总是返回重复项而不是唯一项:

function getRandomItemsCombination(min, max, sourceArray){
    var items = {};
    //var itemsCount = Math.floor(Math.random() * (max - min + 1)) + min;
    var itemsCount = random.integer(min, max);
    //var randomItem = getRandomArrayElement(sourceArray);
    var randomItem;
    var arrIntegers = []
    while(arrIntegers.length < itemsCount){
        var randomnumber=Math.ceil(Math.random()*(sourceArray.length - 1))
        var found=false;
        for(var i=0;i<arrIntegers.length;i++){
            if(arrIntegers[i]==randomnumber){found=true;break}
        }
        if(!found)arrIntegers[arrIntegers.length]=randomnumber;
    }

    items.items = [];
    var randomItemsIndex = {};
    items.quantities = [];
    var existing = false;

    for(var i = 0; i < itemsCount; i++){
        randomItem = sourceArray[arrIntegers[i]];
        var index = randomItemsIndex[randomItem.Long_desc];
        if(index == undefined){
            index = items.items.length;
            randomItemsIndex[randomItem.Long_desc] = index;
            existing = false;
        }
        else {
            existing = true;
        }
        items.items[index] = randomItem;
        existing = false;
    }
    return items;
}
函数GetRandomItemsComposition(最小值、最大值、源数组){ 变量项={}; //var itemscont=Math.floor(Math.random()*(max-min+1))+min; var itemscont=random.integer(最小值、最大值); //var randomItem=getRandomArrayElement(sourceArray); var随机项; 变量arrIntegers=[] while(arrIntegers.length对于(var i=0;i您可以使用下划线js
sample
函数

_.sample(list, [n])
从列表中生成一个随机样本。传递一个数字以返回n 列表中的随机元素。否则将显示单个随机项 返回


您在代码中做了什么?您能解释一下最小、最大和总重量参数的用途吗?仅根据您提供的描述,它们似乎不是必需的。(我还没有跟踪所有代码。)我不认为这真的解释了为什么他的例子没有从数组中选择唯一的元素。我成功地从数组中选择了唯一的元素。为什么他应该写这个代码?!他在这个代码之前写的时间很短。这个解决方案没有解决根本的问题,也没有帮助他使用PAR。特别的问题。他想知道为什么他的方法不起作用,而不是怎么做。除非另有说明,否则SO上的所有解决方案都应该是本机实现,而不是库函数。这实际上解决了潜在的问题。这不一定回答OPs的问题,但我对OP第一句话的理解是他有尝试了两种解决方案,但可能不在乎他是怎么做的。不管怎样,这个答案肯定在这里有一席之地,因为它可能对下一个人有用,即使它没有被选为正确答案。
_.sample([1, 2, 3, 4, 5, 6]);
=> 4

_.sample([1, 2, 3, 4, 5, 6], 3);
=> [1, 6, 2]