与角形物体比较

Pra*_*vin 0 javascript angularjs

跟随我的角度物体

  $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"}
 ]
Run Code Online (Sandbox Code Playgroud)

我想检查'Type'包含任何'Staff'或'Faculty',因为我使用下面的代码

      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;               
            }
          }
Run Code Online (Sandbox Code Playgroud)

我使用JavaScript,我正在寻找角度或JavaScript的简单方法,而不是使用for循环

tag*_*izy 5

var filteredObjects = $scope.obj1.filter(function(obj){
   return obj.Type === 'Faculty' || obj.Type === 'Staff';
})
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含过滤对象的数组(类型为"Faculty"和"Staff").您可以检查length以查看是否有任何其他操作或您需要的其他操作.

编辑
因为你只想检查它是否包含任何'Faculty'或'Staff',你应该使用Array.prototype.some.

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

对于单独的结果,您可以创建 function

function checkExists (type) {
    return $scope.obj1.some(function (obj) { 
        return obj.Type === type;
    }
}
var facultyExist = checkExists('Faculty');
var staffExist = checkExists('Staff');
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用[Array.prototype.some](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some),而不是过滤和检查长度.根据是否有任何元素与谓词匹配,返回一个布尔值. (2认同)