在数组中找到匹配并用jQuery替换它

时间:2013-08-10 07:02:38

标签: 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,16,17]
            ]

其他例子:

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

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

所以,如果任何数字在其他数组上匹配并且将它组合在一起,我需要制作它。例如:

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].

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

你必须编写无聊的循环代码。但是你可以用

使它更容易管理
  • [].push.apply(arr1, arr2);:它将arr2的所有元素推送到arr1而不构建新数组
  • indexOf:它在数组中查找元素。如果您想支持IE8,则在标记问题时,您可以使用$.inArray

以下是代码:

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]);
}

result是您想要的数组。

Demonstration

答案 1 :(得分:0)

如果我理解正确你想要结合

您使用库 下划线 ,您可以这样写

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

链接:Underscore.js