2

Hi I am developing one jquery application. I am trying to compare the two arrays. For example,

Firstarray=["Mike","Jack"];
SecondArray=["Mike","Jack","Andy","Cruz"];

Whenever we compare above two arrays I want to return the strings which exists in both arrays or which are common to both arrays!

I tried as below. This piece of code is not working.

for (var i = 0; i < Firstarray.length; i++) {
   for (var j = 0; j < SecondArray.length; j++) {
     if (Firstarray[i] == SecondArray[j]) {
        alert('found ' + SecondArray[j]);
        return;
     }
   }
}

Can anyone help me in this regards! Thank you very much.

kukkuz
  • 41,512
  • 6
  • 59
  • 95
Niranjan Godbole
  • 2,135
  • 7
  • 43
  • 90

6 Answers6

3

You can use indexOf() function

Firstarray=["Mike","Jack"];
SecondArray=["Mike","Jack","Andy","Cruz"];
var result = new Array();
for (var i = 0; i < Firstarray.length; i++) {
  if(SecondArray.indexOf(Firstarray[i])>=0){
    result.push(Firstarray[i]);
  }
}
console.log(result);
Anupam
  • 7,966
  • 3
  • 41
  • 63
3

Here is a solution using Array.prototype.filter and Array.prototype.some along with some ES6 flavor thrown in - see demo below:

var firstArray=["Mike","Jack"];
var secondArray=["Mike","Jack","Andy","Cruz"];

var result = secondArray.filter(a => firstArray.some(b => a === b));

console.log(result);
kukkuz
  • 41,512
  • 6
  • 59
  • 95
2

check this How can I find matching values in two arrays?

Array.prototype.diff = function(arr2) {
var ret = [];
this.sort();
arr2.sort();
for(var i = 0; i < this.length; i += 1) {
    if(arr2.indexOf( this[i] ) > -1){
        ret.push( this[i] );
    }
}
return ret;
};
Community
  • 1
  • 1
Sharmila
  • 785
  • 4
  • 11
2

var FirstArray=["Mike","Jack"];
var SecondArray=["Mike","Jack","Andy","Cruz"];
var commonArray = Array();
var count=0;

for (var i=0; i<FirstArray.length; i++) {
  for (var j=0;j< SecondArray.length;j++) {
    if (FirstArray[i] == SecondArray[j]){
      commonArray[count]=FirstArray[i];
      count++;
    }
  }
}

console.log(commonArray);
ab29007
  • 7,611
  • 2
  • 17
  • 43
2

Try changing few things in your code :

var Firstarray=["Mike","Jack"];
var SecondArray=["Mike","Jack","Andy","Cruz"];
var matchedData = [];


for (var i = 0; i < Firstarray.length; i++) {
                for (var j = 0; j < SecondArray.length; j++) {
                    if (Firstarray[i] == SecondArray[j]) {
                        matchedData.push(SecondArray[j]);

                    }
                }
            }
            alert(matchedData);

working fiddle : https://jsfiddle.net/o3brcsvw/

Rahul
  • 2,374
  • 2
  • 9
  • 17
2

try this

var Firstarray=["Mike","Jack"];
var SecondArray=["Mike","Jack","Andy","Cruz"];
var matchedData = [];
for (var i = 0; i < Firstarray.length; i++) {
    for (var j = 0; j < SecondArray.length; j++) {
        if (Firstarray[i] == SecondArray[j]) {
            //alert('found ' + SecondArray[j]);
            matchedData.push(SecondArray[j]);
        }
    }
}
return matchedData;