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

In array find match and replace it by jQuery

本文关键字:jQuery 替换 数组 查找      更新时间:2023-09-26

这里有一个数组集:

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将成为Array = [1,2,3,4],[8,9,10,11,12].

有什么建议吗?

您必须编写无聊的循环代码。但使用可能会使其更易于管理

  • [].push.apply(arr1, arr2);:它将arr2的所有元素推送到arr1,而不构建新的数组
  • indexOf:它在数组中查找元素。如果您想支持IE8,就像您标记问题jquery一样,那么您可以使用$.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是您想要的数组。

演示

如果我理解正确,你正在尝试获得联合

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

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

链接:Undercore.js