javascript - 对多个数组中的公共(public)值进行分组

标签 javascript jquery

我在 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]}] }

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

使用基本原型(prototype),例如:

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

然后嵌套它,直到获得我描述的结构。

对于语法错误,我深表歉意,因为我是通过一部糟糕的智能手机回答这个问题的。如果您对此发表评论,我将为您提供一个更好的示例。无论如何,我希望你明白我的意思。

关于javascript - 对多个数组中的公共(public)值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10660457/

相关文章:

jquery - 使用包含文件输入的 AJAX 提交 HTML 表单

javascript - 路由器在 Express.js 中返回 404

javascript - 如何为RESTful Web应用程序实现身份验证?

javascript - 从粘贴的文本中删除背景颜色所见即所得

javascript - 我可以使用 jQuery 找到绑定(bind)在元素上的事件吗?

javascript - 基金会日期选择器限制日期

javascript - 如何在 JavaScript 中读取 `export default *`?

javascript - 如何获取谷歌分析的access_token?

jquery - :input and input in Jquery 之间的区别

javascript - 使动态创建的多个 SVG 响应式