gpt4 book ai didi

javascript - 获取对象的所有可能组合,其中值的总和与数字匹配

转载 作者:行者123 更新时间:2023-11-27 23:03:04 26 4
gpt4 key购买 nike

希望在 typescript 中做到这一点。

我有一个对象数组,其中每个对象都有一个名为 rating 的属性。该数组如下所示:

var objects = [{"name":"foo","rating":4}, {"name":"bar","rating":5}, {"name":"foobar","rating":2}]

现在我有一个目标评级,destinationRating,例如:var targetRating=11。从这些对象中,我需要获取一个由 20 个 key1;key2;key3 形状的字符串组成的数组,其中 key1 等是对象数组中的键,其中所有选定对象的总和至少为 destinationRating。最少 3 个选定对象。我不知道应该如何创建这样的算法。

如果 objects 数组的前 3 个对象匹配,最终结果应如下所示,[0:"0;1;2"]标准。

最佳答案

这是一个生成索引的所有组合(只要它们是必要的,请参见输出)并检查给定条件并返回想要的结果的提案。

结果集包含带有给定数组索引的字符串,这些索引与指定属性的所需总和相匹配。

function combination(array, property, sum) {
function c(part, i) {
var result = [], p, s;
while (i < n) {
p = part.slice(0);
p.push(i++);
document.write(p + '<br>');
s = p.reduce(function (r, a) { return r + array[a][property]; }, 0);
if (s < sum) {
result = result.concat(c(p, i));
}
if (p.length >= 3 && s === sum) {
result.push(p.join(';'));
break;
}
}
return result;
}

var n = array.length;
return c([], 0);
}

var objects = [{ "name": "id0", "rating": 4 }, { "name": "id1", "rating": 5 }, { "name": "id2", "rating": 2 }, { "name": "id3", "rating": 6 }, { "name": "id4", "rating": 8 }, { "name": "id5", "rating": 3 }, { "name": "id6", "rating": 1 }];

document.write('<pre>' + JSON.stringify(combination(objects, 'rating', 11), 0, 4) + '</pre>');

关于javascript - 获取对象的所有可能组合,其中值的总和与数字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36873107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com