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有一个由逗号分隔的两个数字组成的项目,那么它们是否必须相邻显示才能删除,或者在字符串中的任何位置?)