2016-09-14 73 views
0

比較關注我的角度對象與角度對象

$scope.obj1= [ 
    {"NewID":38,"Type":"Faculty","Year":"2016","Status":"Active"}, 
    {"NewID":39,"Type":"Staff","Year":"2016","Status":"Active"}, 
    {"NewID":40,"Type":"Faculty","Year":"2016","Status":"Active"}, 
    {"NewID":41,"Type":"Faculty","Year":"2016","Status":"Active"} 
] 

我要檢查「類型」中包含任何「工作人員」或「學院」爲我用下面的代碼

 var myobj=$scope.obj1; 

     var x=false; y=false; 

      for (var i = 0; i < myobj.length; i++) { 
      if (myobj[i].Type == 'Faculty') {      
       x=true; 
       break; 
      } 

      } 
     for (var i = 0; i < myobj.length; i++) { 

      if (myobj[i].Type == 'Staff') { 
       y=true; 
       break;    
      } 
      } 

我使用的JavaScript因爲我正在尋找簡單的方法在角度或JavaScript而不是使用for循環

回答

5
var filteredObjects = $scope.obj1.filter(function(obj){ 
    return obj.Type === 'Faculty' || obj.Type === 'Staff'; 
}) 

這將返回一個數組與t他過濾了對象(Type'Faculty'和'Staff')。您可以檢查length以查看是否有或需要執行任何其他操作。

編輯
既然你只想檢查是否含有「學院」或「員工」你應該使用Array.prototype.some代替。

var exists = $scope.obj1.some(function (obj) { 
    return obj.Type === 'Faculty' || obj.Type === 'Staff'; 
} 

對於單獨的結果,你可以只創建function

function checkExists (type) { 
    return $scope.obj1.some(function (obj) { 
     return obj.Type === type; 
    } 
} 
var facultyExist = checkExists('Faculty'); 
var staffExist = checkExists('Staff'); 
+2

您可以使用[Array.prototype.some](https://developer.mozilla)來過濾和檢查長度,而不是過濾和檢查長度.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some),它根據任何元素是否與謂詞匹配來返回布爾值。 –

+0

你是對的@JoeClay。小姐讀過這個問題,會編輯。 – taguenizy

+0

我不認爲你誤解了這個問題。這仍然是一個很好的答案 – Phil

3

過濾器會創建一個新的數組每一次,試試這個,如果你需要的是知道如果對象存在:

obj1= [ 
    {"NewID":38,"Type":"Faculty","Year":"2016","Status":"Active"}, 
    {"NewID":39,"Type":"Staff","Year":"2016","Status":"Active"}, 
    {"NewID":40,"Type":"Faculty","Year":"2016","Status":"Active"}, 
    {"NewID":41,"Type":"Faculty","Year":"2016","Status":"Active"} 
]; 

const includes = -1 !== obj1.findIndex(item => item.Type === "Faculty" || item.Type === "Staff"); 

// in case your browser doesnt support arrow functions: 
const includes2 = 
    -1 !== obj1.findIndex(
    function (item) { 
     return item.Type === "Faculty" || item.Type === "Staff"; 
     } 
    ); 
+0

爲什麼這個'=>'對我來說顯示語法錯誤 – Pravin

+0

如果您的瀏覽器不支持箭頭功能或者您不使用Babel –

0
obj1.forEach(function(val,index){ 
    if(val.type=='Faculty) 
    { 
    //your code 
    } 
    else if(val.type == 'Staff') 
    { 
    //your code 
})