2017-03-16 38 views
0

我有兩個數組,其中包含特殊字符,試圖將一個數組的每個元素與另一個數組進行比較,並獲取在另一個數組中找不到的元素。但我的方法無法正常工作將一個數組的每個元素與另一個數組進行比較,找出哪個元素找不到

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

錯誤提示表示特殊charatcter $ scope.notFoundChar未找到

   $scope.charAllowedText = false; 
      return; 
     } 
     } 

     } 

請建議這裏做錯了什麼?

回答

1

可以過濾掉你的特殊字符「*」像下面

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

這不利於OP知道什麼是錯的他們的代碼。 – RobG

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){ 
 
\t var itemFound = false; 
 
\t source.forEach(function(itemFromSrc){ 
 
\t \t if(itemFromTarget === itemFromSrc){ 
 
\t \t \t itemFound = true; 
 
\t \t } 
 
\t }); 
 
\t if (!itemFound) { 
 
\t \t missingItems.push(itemFromTarget); 
 
\t } 
 
}); 
 
console.log(missingItems);

+0

感謝您的快速響應 – saurav

相關問題