saurav
saurav

Reputation: 219

Compare each element of one array to another and find which element is not found

I have two array which contains special characters am trying to compare each element of one array to another and get the element which is not found in another array. But my approach doesnt work properly

var specialChar = ['!','@','#','$','%','&']; var $scope.inp= ['!','*','#'];

In my above example element '*' is not present specialChar

I tried this logic -

    $scope.validateChar = function(specialChar,inp){
  var i,j;
     for (i=0,j=0; i<specialChar.length && j<inp.length;) {
         if (specialChar[i] < inp[j]) {
             ++i;
         } else if (specialChar[i] == inp[j]) {
             ++i; ++j;
         } else {
             $scope.notFoundChar = inp[j]; 

Error prompt showing special charatcter $scope.notFoundChar not found

             $scope.charAllowedText = false;
             return;
         }
        }

       }

Please suggest what am doing wrong here?

Upvotes: 0

Views: 184

Answers (2)

Girish k
Girish k

Reputation: 33

Below given code solves your problem.

var source = [1,2,3,4,5,6,7,8];
var target =[2,3,4,5,6,18,19];
var missingItems = [];
target.forEach(function(itemFromTarget){
	var itemFound = false;
	source.forEach(function(itemFromSrc){
		if(itemFromTarget === itemFromSrc){
			itemFound = true;
		}
	});
	if (!itemFound) {
		missingItems.push(itemFromTarget);
	}
});
console.log(missingItems);

Upvotes: 1

Jaydip Jadhav
Jaydip Jadhav

Reputation: 12309

You can filter out your Special char '*' like below

var result=[]
inp.map(function(inpElement){
  if(specialChar.indexOf(inpElement)==-1)
   result.push(inpElement)
})
console.log(result)

Upvotes: 1

Related Questions