2016-11-08 40 views
0

我有此數組對象:如何檢查在陣列對象的值angularjs

$scope.datas.labels=['10','20','30'] 

並且還我有一個函數返回一個這樣的數組對象:

response.labels=['10','20','30','50','100','80'] 

我創建了一個函數,它接收最後的結果..但我想要的是檢查response.labels中的值是否存在$ scope.datas.labels我不想插入它..以避免在$ scope.datas.labels重複的數據,如何我能做到嗎?

我試過,但我沒有工作:

$scope.concatToData=function (response) { 
    if($scope.datas.labels=='') { 
     $scope.datas.labels = $scope.datas.labels.concat(response.labels); 
    }else { 
     var i; 
     for (i = 0; i < $scope.datas.labels.length; i++) { 
      alert('qa' + JSON.stringify($scope.datas.labels)); 
      alert('res' + JSON.stringify(response.labels)); 
      if ($scope.datas.labels[i] !== response.labels[i]) { 
       $scope.datas.labels = $scope.datas.labels.concat(response.labels[i]); 
      } else { 
       break; 
      } 
     } 
    } 
    $scope.datas.datasets = $scope.datas.datasets.concat(response.datasets); 
} 
+0

的可能的複製[如何合併在Javascript兩個數組並刪除重複的項目](http://stackoverflow.com/questions/1584370/how-to-merge-two- array-in-javascript-and-de-duplicate-items) – PMerlet

+0

謝謝你這樣做 –

回答

0

嘗試此操作將按照您的期望和要求工作。

var arr1=['10','20','30']; 
 

 
var arr2=['10','20','30','50','100','80']; 
 

 
for (var i in arr2) { 
 
    if(arr2[i] != arr1[i]) { 
 
    arr1.push(arr2[i]); 
 
    } 
 
} 
 

 
document.getElementById('result').innerHTML = arr1;
#result { 
 
    font-weight:bold; 
 
    }
<div id="result"></div>

0

你也可以試試:

 var response = ['foo', 'fabio']; 
     var labels = ['foo']; 
     var result = response.filter((value) => { 
      return labels.filter((rs) => { 
       return rs == value; 
      }).length == 0; 
     }); 

這將只返回不上$ scope.datas.labels存在的數據。

+0

謝謝你的答案,但它沒有返回任何東西 –

+0

檢查出來,它會返回結果變量['fabio']。 –

0

看看在lodash庫,你會發現它是有用的,這會爲你有用太:

let common = _.intersection($scope.datas.labels, response.labels); 
if (_.size(common) && _.includes(common, 'myValue')) { 
    // You have a winner; 
    // This item (myValue) is in both; 
} else { 

} 

希望有所幫助。