鉴于此对象:Here is my working code
我需要检查访问者数组中是否已存在某些card_id。我该怎么办?我尝试了一个循环但是没有用,因为当我得到一个新的data.card_id并且访问者数组中已经有多个条目时它可能不匹配。
我的代码:
$scope.$on("addMultiVisitor", function(evt, data) {
$scope.newVisit.visitors.length + 1;
$scope.newVisit.visitors.push({
"access_route_id": "",
"card_id": data.id,
"identity_id": data.identity.id,
"company_id": data.company.id,
"company_name": data.company.name,
"firstname": data.identity.given_names,
"lastname": data.identity.surname,
"birthdate": new Date(data.identity.birthdate)
});
window.scrollTo(0, document.body.scrollHeight);
$scope.$apply();
});
答案 0 :(得分:5)
您可以使用Array.some
方法:
var doesIdExist = $scope.newVisit.visitors.some(function(v) {
return v.card_id === data.id;
});
如果数组中的任何内容与条件匹配,则结果为true
,否则为false
。
答案 1 :(得分:0)
您可以使用indexOf()
检查数组中是否已存在对象。
如果对象不在数组中,则返回-1:
$scope.o = {
"access_route_id": "",
"card_id": data.id,
"identity_id": data.identity.id,
"company_id": data.company.id,
"company_name": data.company.name,
"firstname": data.identity.given_names,
"lastname": data.identity.surname,
"birthdate": new Date(data.identity.birthdate)
}
if($scope.newVisit.visitors.indexOf(o) == -1) { // Not in the array
$scope.newVisit.visitors.push(o);
}
但我猜 @tymeJV answer 更符合您的需求。