我們經常遇到這樣的問題,判斷一個數組中是否含有重複的元素,解決的辦法通常有許多種,這裡介紹一種常用的思路。
判斷數組中元素是否重複,則需要對數組中的元素進行兩兩比較,如果有任意一組元素相等,則該數組中的元素存在重複,如果任意一組元素都不想等,則表示數組中的元素不重複。
實作思路:我們假設數組中的元素不重複,兩兩比較數組中的元素,使用數組中的第一個元素和後續所有元素比較,接着使用數組中的第二個元素和後續元素比較,依次類推實作兩兩比較,如果有一組元素相同,則數組中存儲重複,結束循環。把比較的結果存儲在一個标志變量裡,最後判斷标志變量的值即可。
/**
* 判斷整型數組中是否含有重複的元素
* @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;
},