Javascript 检查对象数组中是否存在值

Javascript 检查对象数组中是否存在值,javascript,angularjs,Javascript,Angularjs,鉴于这一目标: 我需要检查访客阵列中是否已经存在某个卡片id。我该怎么做?我尝试了一个循环,但没有成功,因为当我得到一个新的data.card_id,并且访问者数组中已经有多个条目时,它可能不匹配 我的代码: $scope.$on(“addMultiVisitor”,函数(evt,数据){ $scope.newVisit.visitors.length+1; $scope.newVisit.visitors.push({ “访问路径id”:“, “卡id”:data.id, “identity_

鉴于这一目标:

我需要检查访客阵列中是否已经存在某个卡片id。我该怎么做?我尝试了一个循环,但没有成功,因为当我得到一个新的data.card_id,并且访问者数组中已经有多个条目时,它可能不匹配

我的代码:

$scope.$on(“addMultiVisitor”,函数(evt,数据){
$scope.newVisit.visitors.length+1;
$scope.newVisit.visitors.push({
“访问路径id”:“,
“卡id”:data.id,
“identity_id”:data.identity.id,
“公司id”:data.company.id,
“公司名称”:data.company.name,
“firstname”:data.identity.given_名称,
“lastname”:data.identity.姓氏,
“生日”:新日期(data.identity.birthdate)
});
scrollTo(0,document.body.scrollHeight);
$scope.$apply();
});

您可以使用
数组。一些方法:

var doesIdExist = $scope.newVisit.visitors.some(function(v) {
    return v.card_id === data.id;
});

如果数组中的任何内容与条件匹配,则结果将为
true
,否则
false

您可以使用
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);
}

但是我想这更适合你的需要。

但是记住关于浏览器支持,“some”是IE>=9@PawełKozikowski-是的,我希望现在每个人都在为>=IE9开发