【发布时间】:2016-04-26 18:35:09
【问题描述】:
希望在打字稿中做到这一点。
我有一个对象数组,其中每个对象都有一个名为rating 的属性。数组如下所示:
var objects = [{"name":"foo","rating":4}, {"name":"bar","rating":5}, {"name":"foobar","rating":2}]
现在我有一个目标评级,destinationRating,例如:var destinationRating=11。从这些对象中,我需要得到一个数组,比如 20 个key1;key2;key3 形状的字符串,其中key1 等等是对象数组中的键,其中所有选定对象的总和至少为destinationRating .最少 3 个选定对象。我不知道应该如何创建这样的算法。
如果 objects 数组的前 3 个对象与条件匹配,则最终结果应如下所示,[0:"0;1;2"]。
【问题讨论】:
-
请添加更多数据和一些示例,说明源的样子和想要的结果应该是什么样的。
-
你真正追求的是什么?您可能需要重新评估您的实际目标并采取不同的方法。如上所述的问题,一旦你得到至少一个符合要求的对象组合,组合的数量将随着数组的长度呈指数增长。
-
稍微更新了 OP。甚至可能不必是 20 种组合。
-
因此,不是查找所有可能的组合,而是给您一组组合,您必须确定其中哪一组符合评分标准?
-
听起来你可以通过迭代键字符串数组来完成它,将每个键字符串拆分为包含索引('键')的数组,然后使用索引对评分求和(通过循环迭代或使用reduce函数)。由于您正在学习,因此我有意为您指出正确的方向,而不是给您答案。对我列出的概念进行一些研究,尝试解决方案,然后如果您遇到问题,请发布您尝试的解决方案以及它与预期结果的不同之处。祝你好运!
标签: javascript arrays typescript