Javascript 如何检查数组中是否存在值?

Javascript 如何检查数组中是否存在值?,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我不想将重复值推送到selectedOwners,因此在下面的代码中,用户正在选择所有者。如果所有者已经存在于selectedOwners数组中,我不想推送,我如何检查它以避免数组中的重复值 ctrl.js var selectedOwners = []; $scope.addProcessOwner = function(dataItem){ var selectedOwner = { fullName

我不想将重复值推送到
selectedOwners
,因此在下面的代码中,用户正在选择所有者。如果所有者已经存在于
selectedOwners
数组中,我不想推送,我如何检查它以避免数组中的重复值

ctrl.js

  var selectedOwners = [];
            $scope.addProcessOwner = function(dataItem){
              var selectedOwner = {
                  fullName: dataItem.fullName,
                  workerKey: dataItem.workerKey
              }
              if(selectedOwners.indexOf(selectedOwner) !== -1) {
                selectedOwners.push(selectedOwner);
               }
              console.log('WORKER DATA',selectedOwners);
            }

Array.indexOf
的使用对于字符串和数字等简单类型来说是显而易见的

但是,在查找对象时,必须经过完全相同的对象。具有相同属性和值的不同对象仍将不起作用。将数组视为包含指向对象的指针,必须查找相同的指针


相反,您需要编写自己的方法来比较所有者是否相等,并在数组中循环执行此检查。

对于字符串和数字等简单类型,使用
array.indexOf
是显而易见的

但是,在查找对象时,必须经过完全相同的对象。具有相同属性和值的不同对象仍将不起作用。将数组视为包含指向对象的指针,必须查找相同的指针

相反,您需要编写自己的方法来比较所有者是否相等,并通过数组循环执行此检查。

您可以使用该方法

some()方法测试数组中的某个元素是否通过了所提供函数实现的测试

你可以使用这个方法

some()方法测试数组中的某个元素是否通过了所提供函数实现的测试

尝试将“如果”逻辑包装在for循环中

范例

//下面的代码在数组中循环并检查已有的值

for(var i = 0; i < selectedOwners.length; i++){
if(selectedOwners.indexOf(selectedOwner) !== -1) {
                selectedOwners.push(selectedOwner);
               }
}
for(变量i=0;i
尝试将“if”逻辑包装到for循环中

范例

//下面的代码在数组中循环并检查已有的值

for(var i = 0; i < selectedOwners.length; i++){
if(selectedOwners.indexOf(selectedOwner) !== -1) {
                selectedOwners.push(selectedOwner);
               }
}
for(变量i=0;i
你可以通过loopTry
来检查它,循环:
来检查(var i=0;i
你可以通过loopTry
来检查它,循环:
来检查(var i=0;i
但我不明白
选择的所有者是什么。有些(存在)
some@hussain
some()
方法测试数组中是否有某个元素,但我不明白所选的所有者是什么。有些(存在)
some@hussain
some()