[英]I need to merge objects. They all have the same keys but differing numerical values. I need to get the sum of values for each key
[英]I have an array of objects. I want to randomly output objects whose sum of values is equal to eight
const obj =
[
{noir: 1},
{croch: 0.5},
{doubleCroch: 1},
{triollet: 1.5},
{quatreDouble: 2}
];
所需的 output 示例:
2, 2, 0.5, 0.5, 1, 2
for (var i = 0 ; i < obj.length ; i++ ){
var randomItem = obj[Math.floor(Math.random()*obj.length )];
}
这给我带来了五个随机项目。 但我想要元素的值之和等于 8。
它看起来像随机内的条件
我想你在这里有几个选择:
您计算并收集总和为 8 的所有可能组合。然后您随机选择一个组合。 这可能在计算上很昂贵,尤其是因为您似乎允许重复。 实施起来并不容易。
你一直在从你的 object 中随机挑选元素,并跟踪总和。 如果总和达到 8,则您有一个获胜组合。 如果超过 8,则从头开始。 更容易实现,但理论上可能会无限运行。
开始时与之前的方法相同,但如果总和超过 8,则丢弃最后选择的元素并选择另一个。 这将要求您跟踪您已经为每个选择的元素尝试过的所有元素,因为您可能需要回溯到比最后一个选择的元素更远的地方。 这将是最难实施的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.