将一个数组的每个元素与另一个数组进行比较,找出未找到的元素

时间:2017-03-16 06:28:35

标签: javascript arrays

我有两个包含特殊字符的数组,我试图将一个数组的每个元素与另一个数组进行比较,并得到另一个数组中找不到的元素。但我的方法无法正常工作

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

在上面的示例中,元素'*'不存在specialChar

我尝试了这个逻辑 -

    $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]; 

错误提示显示未找到特殊字符$ scope.notFoundChar

             $scope.charAllowedText = false;
             return;
         }
        }

       }

请在这里建议我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可以过滤掉您的特殊字符'*',如下所示

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

答案 1 :(得分:1)

下面给出的代码可以解决您的问题。

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