与角度对象
问题描述:
比较关注我的角度对象与角度对象
$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循环
答
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');
答
过滤器会创建一个新的数组每一次,试试这个,如果你需要的是知道如果对象存在:
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 –
答
obj1.forEach(function(val,index){
if(val.type=='Faculty)
{
//your code
}
else if(val.type == 'Staff')
{
//your code
})
您可以使用[Array.prototype.some](https://developer.mozilla)来过滤和检查长度,而不是过滤和检查长度.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some),它根据任何元素是否与谓词匹配来返回布尔值。 –
你是对的@JoeClay。小姐读过这个问题,会编辑。 – taguenizy
我不认为你误解了这个问题。这仍然是一个很好的答案 – Phil