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@hussainsome()
方法测试数组中是否有某个元素,但我不明白所选的所有者是什么。有些(存在)
some@hussainsome()