我们经常遇到这样的问题,判断一个数组中是否含有重复的元素,解决的办法通常有许多种,这里介绍一种常用的思路。
判断数组中元素是否重复,则需要对数组中的元素进行两两比较,如果有任意一组元素相等,则该数组中的元素存在重复,如果任意一组元素都不想等,则表示数组中的元素不重复。
实现思路:我们假设数组中的元素不重复,两两比较数组中的元素,使用数组中的第一个元素和后续所有元素比较,接着使用数组中的第二个元素和后续元素比较,依次类推实现两两比较,如果有一组元素相同,则数组中存储重复,结束循环。把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。
/**
* 判断整型数组中是否含有重复的元素
* @param arr
*/
private void checkIsRepeat(int[] arr){
boolean flag = true; //假设不重复
for(int i = 0;i < arr.length-1;i++){ //循环开始元素
for(int j = i + 1;j < arr.length;j++){ //循环后续所有元素
//如果相等,则重复
if(arr[i] == arr[j]){
flag = false; //设置标志变量为重复
System.out.println("重复的值为:"+arr[i]);
break; //结束循环
}
}
}
//判断标志变量
if(flag){
System.out.println("数组没有重复的元素");
}else{
System.out.println("数组含有重复的元素");
}
}
运行一下程序,看结果如何
这里初始化了两个数组,其中一组含有重复元素,别一组不含,输出结果显示符合预期。
js版本
//检查人员id是否有重复
function checkDataRepeat(arr){
var falg = false; //默认不重复
for(var i = 0; i< arr.length-1;i++){
for(var j =i+1 ;j<arr.length;j++){
if(arr[i].userId == arr[j].userId ){
falg = true; //重复
console.log('成员信息有重复,重复的 userId:'+arr[i].userId);
break;
}
}
}
return falg;
},