حذف مقادیر تکراری در یک آرایه

hamid_369

New Member
سلام.من یک آرایه دارم که مقادیر تکراری داره.چطور میتونم موارد تکراری رو توی این آرایه حذف کنم.
مثلاً از 1,2,3,3,3,4,4,5 به 1,2,3,4,5 تبدیل بشه.
 

mosyhey

Member
سوال جالبی است. احتمالاً بایستی یک دستور برای حذف سریع آیتم های یک آرایه باشد و برنامه نویسی اش راحت تر باشد.
به هر حال اگر راه سریعتری نیافتی از این استفاده کن:
HTML:
<%
del_arr=array()
array_arr=Array(1,2,3,3,3,4,4,5,1,2,3,4,5,5,4,3,2,1,3,5,5,5,5)
ubarray_int=UBound(array_arr)
Response.Write("Old: ")
For cont0=LBound(array_arr) To UBound(array_arr)
	Response.Write(array_arr(cont0) & " , ")
Next
Response.Write("<br>")
cont1=0
Do While cont1<ubarray_int
	cont2=cont1+1
	Do While cont2<=ubarray_int
		If array_arr(cont1)=array_arr(cont2) Then
			exist_bol=False
			For cont3=LBound(del_arr) To UBound(del_arr)
				If del_arr(cont3)=cont1 Then exist_bol=True
			Next
			IF Not exist_bol Then
			Redim Preserve del_arr(UBound(del_Arr)+1)
			del_arr(UBound(del_Arr))=cont2
			End If
			
		End If
		cont2=cont2+1
	Loop
	cont1=cont1+1
Loop
ubdel_int=UBound(del_arr)
For i=0 to ubdel_int 
	For j=i+1 to ubdel_int 
		If del_arr(i)<del_arr(j) then
			Tempvar=del_arr(i)
			del_arr(i)=del_arr(j)
			del_arr(j)=Tempvar
		End if
	Next 
Next 
del_int=0
For cont4=LBound(del_arr) To UBound(del_arr)
	For cont5=del_arr(cont4) To UBound(array_arr)-1
		array_arr(cont5)=array_arr(cont5+1)
	Next
	del_int=del_int+1
Next
Redim Preserve array_arr(ubarray_int-del_int)
Response.Write("New: ")
For cont6=LBound(array_arr) To UBound(array_arr)
	Response.Write(array_arr(cont6) & " , ")
Next
%>
 

mazoolagh

Active Member
البته اگر این مقادیر در دیتابیس ذخیره شده باشند با distinct میشه مقادیر تکراری رو حذف کرد و نیازی به کدنویسی نیست.

فانکشن distinct در پایین یک آرایه رو میگیره و مقادیر تکرار اون رو حذف میکنه.
کد:
function Distinct(X) {
	var Y = new Array() ;
	var n = 0 ;
	Y[n] = X[n] ;
	for (i=1 ; i<X.length ; i++) {
		unique = 1 ;
		for (j=0 ; j<Y.length ; j++) {
			if (X[i]==Y[j]) {
				unique = 0 ;
				break ;
			}
		}
		if (unique==1) {
			n++ ;
			Y[n] = X[i] ;	
		}
	}
	return (Y) ;
}

این فانکشن رو میشه هم در سمت سرور و هم در سمت کلاینت استفاده کرد. یک نمونه از صفحه asp در پایین آورده شده:
HTML:
<%@LANGUAGE="JavaScript"%>
<html>
<head>
</head>
<body>
<%
var X = new Array(2,3,3,4,7,1,5,2,7,10,15,9,3,6,1,1,4,4,9,8,2,6) ;
var DX = Distinct(X) ;
Response.write (DX.join(",")) ;

function Distinct(X) {
	var Y = new Array() ;
	var n = 0 ;
	Y[n] = X[n] ;
	for (i=1 ; i<X.length ; i++) {
		unique = 1 ;
		for (j=0 ; j<Y.length ; j++) {
			if (X[i]==Y[j]) {
				unique = 0 ;
				break ;
			}
		}
		if (unique==1) {
			n++ ;
			Y[n] = X[i] ;	
		}
	}
	return (Y) ;
}
%>
</body>
</html>
 

جدیدترین ارسال ها

بالا