我正在使用 Angular.js 1.5 以及 Angular Material 来在前端从数据库加载对象并加载 DOM。在其中一个重复器中,我需要检查一个对象是否已经包含在另一个作用域内的 JavaScript 数组中。我尝试使用
用例是用户需要将项(ObjA)添加到另一个列表(Objs)中的列表中(ObjX.Objs)。
我的前端 HTML 代码:
我也尝试匹配对象ID,但没有任何区别。
Array.indexOf()
,Array.forEach
,使用标准 for 循环遍历每个元素,但它没有按照我所需的方式发生。我一定做了什么愚蠢的事情阻止了逻辑的正常运行,理想情况下,如果当前对象存在于数组中,则该方法应返回 false ,否则返回 true。用例是用户需要将项(ObjA)添加到另一个列表(Objs)中的列表中(ObjX.Objs)。
我的前端 HTML 代码:
//here there's an object that contains an array of objects
<div ng-controller="myFirstController" ng-init="findOne()">
<md-list-item ng-repeat="ObjA in ObjX.Objs" >
</md-list-item>
<div ng-controller="mySecondcontroller" ng-init="find()">
<md-list-item ng-repeat="ObjA in Objs" ng-if="ObjAExists(ObjA, ObjX.Objs)">
</md-list-item>
</div>
</div>
控制器方法:
$scope.ObjAExists = function(ObjA, list){
for(var m = 0; m<list.length; m++){
if(list[m] === ObjA){
return false;
}
else return true;
}
}
我也尝试匹配对象ID,但没有任何区别。
$scope.ObjAExists = function(ObjA, list){
for(var m = 0; m<list.length; m++){
if(list[m]._id == ObjA._id){
return false;
}
else return true;
}
}
技能筛选 plunk 这是我编写的一个 plunk,展示了相同的问题。