Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:如何比较每个索引中有多个值的两个数组并删除重复的数组_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript jQuery:如何比较每个索引中有多个值的两个数组并删除重复的数组

Javascript jQuery:如何比较每个索引中有多个值的两个数组并删除重复的数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,我真的不知道怎么做。我想删除具有多个值的数组的重复值。我试图使用这篇文章中的代码,但没有得到我想要的结果。请帮我做这个 var arr1=[“1,2,3”,“4,5”,“6”,“7,8”,“9,10”]; var arr2=[“2”、“4”、“7,8”]; var结果=[]//预期输出:数组[“1,3”、“5”、“6”、“9,10”] $.each(arr1,函数(i,val){ 如果($.inArray(val,arr2)

我真的不知道怎么做。我想删除具有多个值的数组的重复值。我试图使用这篇文章中的代码,但没有得到我想要的结果。请帮我做这个

var arr1=[“1,2,3”,“4,5”,“6”,“7,8”,“9,10”];
var arr2=[“2”、“4”、“7,8”];
var结果=[]//预期输出:数组[“1,3”、“5”、“6”、“9,10”]
$.each(arr1,函数(i,val){
如果($.inArray(val,arr2)<0)
结果:推送(val);
});
控制台日志(结果)

首先,您必须将每个数字字符串拆分,并将它们作为整数添加到数组中

在此之后,您可能希望使用类似哈希映射的方法来高效地获取数组的交集。榜样应该起作用

这里有一个简单的例子。当然,您还需要拆分arr2+并将其值添加到intersectMap

intersectMap = {}
for (i = 0; i < arr.length; i++) {
    var values = arr[1].split(",")
    // add these values to a hash map
    for (j = 0; j < values.length; j++) {
        intersectMap[values[j]] = values[j]
    }
}
intersectMap={}
对于(i=0;i

基本上,您需要运行刚刚创建的每个数组(使用正确分割的字符串),将它们添加到哈希映射(intersectMap),完成后,将所有键添加到新数组。这将保证您在尽可能最有效的时间内得到一组唯一的值。

如果性能不是一个大问题,这将满足您的需要:

var arr1   = ["1,2,3", "4,5", "6", "7,8", "9,10"]
var arr2   = ["2", "4", "7,8"].join(',').split(',');
var result = [];

$.each(arr1, function(i, val) {
  var values   = val.split(',');
  var filtered = [];
  $.each(values, function (i, value) {
    if ($.inArray(value, arr2) === -1) {
      filtered.push(value);
    }
  });

  if (filtered.length) result.push(filtered.join(','));
});

在这两个数组中,您是否忘记了逗号之间的双引号或
arr1[]
(例如)应该像
“1”、“2”、“3”、“4”、“5”…
?不,先生,我是这样想的。数组在每个索引中都有多个值,用逗号分隔。然后使用
.split()
我可以将每个索引的值生成一个数组。在您的示例中,如果
arr2
也包含“1”,您希望得到什么结果?(如果字符串中存在两个不同的arr2项,它们是否都已删除?)如果它不包含“2”,但包含“1,3”,该怎么办?(如果arr2有一个由逗号分隔的两个数字组成的项目,那么它们是否必须相邻显示才能删除,或者在字符串中的任何位置?)