我有两个包含特殊字符的数组,我试图将一个数组的每个元素与另一个数组进行比较,并得到另一个数组中找不到的元素。但我的方法无法正常工作
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;
}
}
}
请在这里建议我做错了什么?
答案 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);