我在javascript中有多个数组,元素数量相同。我想找到共同的价值观,并将其分组为单独的数组,如下所示(使用javascript和jquery)...

[1,2,3,4]
[1,2,3,5]
[1,2,3,6]
[1,2,4,3]


我想要以下结果:

1/2/3 / 4,5,6
1/2/4/3

这将导致上述两组独立的组合。下面是不正确的:

1/2 / 3,4 / 3,4,5,6

因为不存在[1,2,4,5]和[1,2,4,6]的数组。

这是我的代码

<input type="checkbox" class="cb4" value="1,2,3,4" />
<input type="checkbox" class="cb4" value="1,2,3,5" />
<input type="checkbox" class="cb4" value="1,2,3,6" />
<input type="checkbox" class="cb4" value="1,2,4,3" />

for (i = 0; i < 4; i++) {
    combos[i] = [];
}
$('input.cb4:checked').each(function(){
    var nums = this.value.split(',');
    for (i = 0; i < nums.length; i++) {
        if ($.inArray(nums[i], combos[i]) == -1) {
            combos[i].push( nums[i] );
        }
    }
});

var bets = '';
for (i = 0; i < combos.length; i++) {
    combos[i].sort(function(a,b) {return a-b});
    bets += combos[i] + ' / ';
}


字符串下注的值为:“ 1/2 / 3,4 / 3,4,5,6”。同样,这是不正确的,因为没有1,2,4,5或1,2,4,6的值。

最佳答案

我建议您将输入数组排序为一对多的树结构,即{1,[{2,[{3,[4,5,6]},{4,[3]}]}

无论您选择按原样使用此结构还是将其转换为字符串,它都将保留您想要的信息。

使用基本的原型,例如:

oneToMany = function(a, b) {
  branch = a;
  leaves = new Array();
  for each x in b {
    leaves.push(x).;
  }
}


然后将其嵌套,直到您具有我描述的结构。

我为语法错误表示歉意,因为我正在从一台性能较差的智能手机中对此进行回答。如果您对此有任何评论,我将为您提供一个更好的示例。我希望你仍然明白我的意思。

关于javascript - 将多个数组的公用值分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10660457/

10-17 03:00