Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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_Combinations_Counter - Fatal编程技术网

Javascript 跟踪数组中多个值的计数器

Javascript 跟踪数组中多个值的计数器,javascript,arrays,combinations,counter,Javascript,Arrays,Combinations,Counter,这似乎有点复杂,所以我会尽我所能做到尽可能清楚。我正在寻找的特定函数会动态创建一个赌博游戏的花钱|赢钱图表 我有一种用户可以下注的彩票。用户可以购买6个项目,每个项目有6个奖品: 这些可以放入对象或数组中 var价格=[5,10,28,50,56280] var-possibleWins=[40,802504005002500] 我正试图创建一个图表,计算出你在每场比赛中每一个特定项目上要花多少钱才能保证你获得300场比赛的收入 下面是图表应该如何开始的示例: 投资=最大可能赢款+总花费(为

这似乎有点复杂,所以我会尽我所能做到尽可能清楚。我正在寻找的特定函数会动态创建一个赌博游戏的花钱|赢钱图表

我有一种用户可以下注的彩票。用户可以购买6个项目,每个项目有6个奖品:

这些可以放入对象或数组中

var价格=[5,10,28,50,56280]

var-possibleWins=[40,802504005002500]

我正试图创建一个图表,计算出你在每场比赛中每一个特定项目上要花多少钱才能保证你获得300场比赛的收入

下面是图表应该如何开始的示例:

投资=最大可能赢款+总花费(为负)

第二排假设第一场比赛已经开始并输了。等等

这个想法是从最小的项目开始,但一旦它不再能让你积极,即使你赢了,就放弃。这就是为什么我们在第9行切换到岩石。(我们的投资是0,如果我们再玩一次,我们最多能赢40。因此,即使我们赢了,我们总共也会输5场。)

同样值得指出的是,如果你赢了一个项目;您在该特定游戏的所有项目上都获胜。所以你得到了所有的奖品

我已经为此工作了几天,其中一些相关的问题已经有了我的初步尝试(但我真的不知道):


编辑:每场游戏必须至少购买1件物品,并且不能跳过游戏

基本上,此提案依赖于一个功能来获取下一件物品

    getItems = function () {
        var price = 0,
            array = lottery.map(function (a) { return a.price; });

        return function () {
            var items;
            do {
                items = combine(array, price);
                price++;
            } while (!items.length)
            return items;
        }
    }(),
它从零开始,将值增加一,直到找到项目组合。然后返回
数组。该函数用作生成器

另一个重要的功能是组合具有给定价格的项目,并尝试获取包含这些项目的数组

function combine(array, sum) {

    function c(left, right, sum) {
        if (!sum) {
            result = right;
            return true;
        }
        return left.some(function (a, i, aa) {
            return a <= sum && c(aa.slice(i + (a > sum - a)), right.concat(a), sum - a);
        });
    }

    var result = [];
    c(array.sort(function (a, b) { return b - a; }), [], sum);
    return result;
}
表{边框折叠:折叠;字体系列:无衬线;}
th{边框:1px实心#ccc;填充:0 10px;}

td{text align:center;border:1px solid 35; ccc;}
您可以创建一个对象,其中属性名称设置为
可能的值。设定每轮投资限额的所有可能组合。数组不包含小于该特定轮限制的所有可能的数字组合。也就是说,这些数字并不是分散在每个可能的组合中。例如,在圆形
40
,将
[10,10,10,10,0,0,0]
作为数组包括在内;虽然也可以将数组重新排列为
[10,0,10,10,0,10,0,10]
,或总索引小于
40的其他组合

小于该轮的
限制
的其他可能允许的组合将被推送到与返回对象的特定轮对应的数组中

此实施不会试图确定每一轮的选择路线,这将导致积极的结果。整个数组集可以针对每个数组中的每个匹配索引、随机索引的组合或索引的每个可能组合进行迭代

该方法是一个基本模板,可以从中做出可能的选择。进一步的可选数组包含小于对象属性名称的值的组合(即特定轮),或者来自属性名称值小于当前轮的对象属性的数组中的数组中的值,可以添加到数组数组中;找到导致预期结果的选择组合

const[prices,possibleWins]=[
[5, 10, 28, 50, 56, 280],
[40, 80, 250, 400, 500, 2500]
];
常量计数器选项=(价格,可能值)=>{
让轮={};
对于(价格中的价格){
让[chance,limit]=[],possibleWins[prices.indexOf(price)];
for(让buyin=price-price;buyin v!==choice&&v+choice index+1)
.filter(key=>key*option这是我的解决方案

let项目=[{
名称:'细枝',
价格:5,,
赢:40
}, {
名字:'岩石',
价格:10,,
赢:80
}, {
名称:'外壳',
价格:28,
赢:250
}, {
名称:'芯片',
价格:50,,
赢:400
}, {
姓名:'黄金',
价格:56,
赢:500
}, {
名称:“钻石”,
价格:280,
赢:2500
}];
让我们移动=[];
Move.prototype.numberItems=函数(){
让计数=0;
for(设n=0;n<6;n++){
计数+=此。计数[n];
}
返回计数;
}
Move.prototype.nameItems=函数(){
让name='';
for(设n=0;n<6;n++){
for(设x=0;x