比较2个数组并删除重复数据

时间:2017-07-25 10:46:22

标签: jquery

我正在尝试使用jquery比较2个数组并从中删除重复项。
这是我的代码。这个逻辑是正确的吗?

var list1 = [6, 7, 3, 4, 1, 2];
var list2 = [2, 4, 6, 5, 1, 9, 8, 7, 8];

var newArray = [];
var index1, index2;
$.each(list1, function(i, value)) {
  index1 = $.inArray(list1[i]);
  index2 = $.inArray(newArray[i]);
  if (index2 == -1) {
    newArray.push(list2[i]);
  }
}

预期产出:

[3,5,9,8]

4 个答案:

答案 0 :(得分:4)

试试这个

<script type="text/javascript">
    var arr1=[6,7,3,4,1,2];
    var arr2=[2,4,6,5,1,9,8,7,8];
    $(document).ready(function(){
        var newArray=$.merge($(arr1).not(arr2).get(),$(arr2).not(arr1).get());
        console.log(newArray);
    });
</script>

它给出了

[ 3, 5, 9, 8,8 ]

使用$ .each,$ .inArray和.push的的另一个答案 试试这个

var list1 = [6, 7, 3, 4, 1, 2];
var list2 = [2, 4, 6, 5, 1, 9, 8, 7, 8];

var newArray = [];
$.each(list1, function(i, value){
    if($.inArray(value,list2)==-1){
        newArray.push(value);
    }
});
$.each(list2, function(i, value){
    if($.inArray(value,list1)==-1){
        newArray.push(value);
    }
});
newArray=$.unique(newArray);
console.log(newArray);

它给出了

[ 3, 5, 9, 8]

答案 1 :(得分:1)

Concat数组并过滤两个:

&#13;
&#13;
var list1=[6,7,3,4,1,2];
var list2=[2,4,6,5,1,9,8,7,8];

function removeDuplicates(arr1, arr2) {
    return [...new Set(arr1.concat(arr2).filter(e => ! (arr2.includes(e) && arr1.includes(e))))];
}

console.log(removeDuplicates(list1, list2));
&#13;
&#13;
&#13;

答案 2 :(得分:1)

这是一种类似于你的方式......

var list1=[6,7,3,4,1,2];
var list2=[2,4,6,5,1,9,8,7,8]; 
var list = list1.concat(list2);
var uniqueList = []; 
$.each(list , function(i, el){
  if($.inArray(el, uniqueList) === -1) 
   {
    uniqueList .push(el);
   }
});

答案 3 :(得分:1)

试试这个fiddle

var list1 = [6, 7, 3, 4, 1, 2];
var list2 = [2, 4, 6, 5, 1, 9, 8, 7, 8];
var newArray = [];
$.each(list1, function(i, value) {
  if ($.inArray(value, list2) == -1) {
    newArray.push(value);
  }
});
$.each(list2, function(i, value) {
  if ($.inArray(value, list1) == -1) {
    newArray.push(value);
  }
});
console.log(newArray);

按要求使用$ .each,$。inArray和.push