我在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的值。
答案 0 :(得分:0)
我建议你将输入数组分类为一对多的树结构,即{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).;
}
}
然后嵌套直到你有我描述的结构。
我为语法错误道歉,因为我是用一部可怜的智能手机回答的。如果您对此发表评论,我会以更好的例子填写您。无论如何,我希望你明白我的观点。