我如何以有效的方式在javascript中执行以下操作?

我按顺序有7个项目(项目0,项目1,项目2 ...项目6)的计数器。
就像计数= [0,2,0,5,6,0,9];

有3个互斥的组:
组1:项目0,项目1,项目2
组2:项目3、4、5
组3:item6

当且仅当组成员元素的计数器> = 0时,才认为已选择一个组。

现在我想知道选择了哪个组?

最佳答案

在通过堆垛进行澄清之后,如果选择了[至少]个元素之一,则选择一个组。
这反过来使问题的“互斥”部分变得模棱两可,因为提供的示例(计数= [0,2,0,5,6,0,9])将选择所有3个组...

永远不要少...
可以依靠JavaScript对布尔表达式的短路求值来最佳地解决标识哪个组被选中的问题。

临时解决方案如下所示:

counts = [0,2,0,5,6,0,9];  // as stated an bad value for counts,
                           // if groups are to be mutually exclusive
if (counts[0] || counts[1] || counts[2])
{
   GroupSelected = 1;
}
else if (counts[3] || counts[4] || counts[5])
{
   GroupSelected = 2;
}
else if (counts[6] > 0)
{
   GroupSelected = 3;
}
else
{
   GroupSelected = -1;  //  none of the groups is selected !!!
}


注意:可能的优化来自对选定元素的概率(相对于其组中其他元素的概率)的“先验”知识,以及选定给定组的概率。
有了这样的知识,可以将以上代码片段重写为首先对最可能的组进行第一次测试,并在每个组内首先对最可能的元素进行测试。

关于javascript - Javascript如何知道一个数组是否是另一个的子数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1623055/

10-12 12:58
查看更多