Javascript 在数组中查找匹配项并用jQuery替换它

Javascript 在数组中查找匹配项并用jQuery替换它,javascript,jquery,arrays,Javascript,Jquery,Arrays,这里有一个数组集: totalarray =[ [1,2,3,4], [8,9,10], [15,16,17], [8,14,20] ] 如果哪一组有相同的数字,我需要把它组合起来 就像这样: totalarray =[ [1,2,3,4], [8,9,10,14,20], [15

这里有一个数组集:

totalarray =[
             [1,2,3,4],
             [8,9,10],     
             [15,16,17],
             [8,14,20]
            ]
如果哪一组有相同的数字,我需要把它组合起来

就像这样:

totalarray =[
             [1,2,3,4],
             [8,9,10,14,20],
             [15,16,17]
            ]
其他例子:

totalarray =[
[1,2,3,4],
[6,10,19],
[6,16,4],
[4,14,20]
]

所以,我需要使它,如果任何数字匹配的其他数组,并使它在一起。e、 g:

Array = [[1,2,3,4],[8,9,10],[8,11,12]]; 
Array[1][0]
Array[2][0]
匹配,因此数组将变成
Array=[1,2,3,4],[8,9,10,11,12]。


有什么建议吗?

如果我没听错的话,你正在努力争取工会

使用库下划线可以这样写

_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]);
=> [1, 2, 3, 101, 10]

链接:

您必须编写无聊的循环代码。但是你可以让它更易于管理

  • [].push.apply(arr1、arr2):它将
    arr2
    的所有元素推送到
    arr1
    而不构建新数组
  • :它在数组中查找元素。如果您想支持IE8,正如您标记问题一样,那么您可以使用
代码如下:

var totalarray =[
  [1,2,3,4],
  [8,9,10],     
  [15,16,17],
  [8,14,20]
];
var result = [totalarray[0]];
function prec(tai) {
  for (var j=0; j<result.length; j++) {
    for (var k=0; k<tai.length; k++) {
      if (result[j].indexOf(tai[k])!=-1) {
        return result[j];
      }
    }
  }
  return null;
}
for (var i=1; i<totalarray.length; i++) {
  var arr = prec(totalarray[i]);
  if (arr) [].push.apply(arr, totalarray[i]);
  else result.push(totalarray[i]);
}
var totalarray=[
[1,2,3,4],
[8,9,10],     
[15,16,17],
[8,14,20]
];
var结果=[totalarray[0]];
功能预控制器(tai){

对于(var j=0;jI,我不确定我是否理解你的问题。你的意思是哪个有一个重复的数字?你能解释更多吗?对不起,如果任何数字在其他数组上匹配,我需要将其设置为一起。例如:array=[1,2,3,4],[8,9,10],[8,11,12];array[1][0]和array[2][0]匹配,因此数组将变为array=[1,2,3,4],[8,9,10,11,12]。感谢您的快速回复。因此,您只想加入具有共同值的数组?是否确定没有更好的方法来实现此目的?例如,合并所有数组并删除重复的数组?您的第二个示例似乎是错误的:数组0+3和数组1+2之间没有共同值。数组[1][0]和数组[2][0]能匹配吗?!嗯,这看起来真的不像OP要求的。
var totalarray =[
  [1,2,3,4],
  [8,9,10],     
  [15,16,17],
  [8,14,20]
];
var result = [totalarray[0]];
function prec(tai) {
  for (var j=0; j<result.length; j++) {
    for (var k=0; k<tai.length; k++) {
      if (result[j].indexOf(tai[k])!=-1) {
        return result[j];
      }
    }
  }
  return null;
}
for (var i=1; i<totalarray.length; i++) {
  var arr = prec(totalarray[i]);
  if (arr) [].push.apply(arr, totalarray[i]);
  else result.push(totalarray[i]);
}