2

I am trying to compare 2 arrays using jquery and remove duplicates from that.
This is my code.Is this logic correct?

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

Expected output:

[3,5,9,8]
krish
  • 1,077
  • 6
  • 24
  • 49

4 Answers4

4

Try like this

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

It give out put as

[ 3, 5, 9, 8,8 ]

Another answer with using $.each,$.inArray and .push only Try this

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

It give out put as

[ 3, 5, 9, 8]
Bibhudatta Sahoo
  • 4,808
  • 2
  • 27
  • 51
1

Concat the arrays and filter the two:

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));
baao
  • 71,625
  • 17
  • 143
  • 203
  • Please give me suggestion for this question using `$.each`,`$.inArray` and `.push`.please. – krish Jul 25 '17 at 11:01
1

This is a way similar to yours...

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);
   }
});
Ardit
  • 376
  • 4
  • 9
1

Try this 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);

Used $.each,$.inArray and .push as requested

Arunkumar G
  • 126
  • 6