Dato il vettore A, non ordinato, voglio estrarre nel vettore B i valori non univoci presenti in A
es. A = ['x', 'y', 'z', 'y']; ==> B = ['Y'];
una mano per favore? :master:
Dato il vettore A, non ordinato, voglio estrarre nel vettore B i valori non univoci presenti in A
es. A = ['x', 'y', 'z', 'y']; ==> B = ['Y'];
una mano per favore? :master:
Pietro
Ciao pietro09,
ti butto li una soluzione
codice:function arrDoppi(arr){ var arr2=new Array(); var arr3=new Array(); for(var i=0;i<arr.length;i++){ if(arr2[arr[i]])arr3[arr3.length]=arr[i] arr2[arr[i]]=arr[i] } return arr3 } A=['x','y','z','y','k','l','m','k','v'] for(i=0;i<A.length;i++) document.write(A[i]+' '); B=arrDoppi (A) document.write('<hr>') for(i=0;i<B.length;i++) document.write(B[i]+' ');![]()
ti butto li una soluzioneNon è propriamente una soluzione "buttata così". Ho dovuto faticare un poco per capire l'algoritmo, e non è neanche facile trovare qualcosa in rete. Interessante. Ciao
![]()
Pietro
:master: lo puoi provare con questi dati?
['x','y','z','y','z','z'];
dovrebbe restituire ['y', 'z'] :master:
l'ho corretto così:
codice:function arrDoppi(arr) { var arr2 = new Array(); var arr3 = new Array(); for(var i = 0; i < arr.length; i++) { if(arr2[arr[i]] && arr3.indexOf(arr[i]) == -1 ) arr3[arr3.length] = arr[i]; arr2[arr[i]] = arr[i]; } return arr3; }
Pietro
innanzitutto scusate la mia ignoranza ma sto cercando di studiare java x l'uni,ma volendo non si potrebbero usare due for,uno x fissare l'elemento e l'altro x scorrere il vettore??
ditemi un pò voi
:master: Diavolo! io non mi riccordo nientee willybit è da un secolo che non lo vedo :master:
Pietro
ah cavoloxkè stavo cercando di risolvere il tuo esercizio x l'uni e ho trovato questa discussione
![]()
Questo è quello che ho raccolto
:quote: si, è in basic. L'ho messo perchè funziona. Da tradurre in javascriptcodice:'--------------------------------------------------------------------------- 'restituisce un vettore di valori duplicati nel vettore argomento '--------------------------------------------------------------------------- Public Function ValoriDuplicati(ByVal v As String()) As String() Dim u(v.GetUpperBound(0)) As String Dim n As Integer = -1 For i As Integer = 0 To v.GetUpperBound(0) For j As Integer = 0 To v.GetUpperBound(0) If i <> j AndAlso v(i) = v(j) AndAlso Array.IndexOf(u, v(i)) = -1 Then n += 1 u(n) = v(i) Exit For End If Next Next ReDim Preserve u(n) Return u End Function![]()
Questo è sicuramente in javascript
BADA CHE NON HO CONTROLLATO, E' ROBA VECCHIAcodice:function Button2_onclick() { var a = ['x','y','z','y','z','z']; //var b = arrDoppi(a); var c = ValoriDuplicati(a); alert(c); } if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, startIndex) { var len = this.length; if (startIndex == null) startIndex = 0; else if (startIndex < 0) { startIndex += len; if (startIndex < 0) startIndex = 0; } for (var i = startIndex; i < len; i++) { var val = this[i] || this.charAt && this.charAt(i); if (val == item) return i; } return -1; }; function ValoriDuplicati(v) { var u = []; for(var i = 0; i < v.length; i++) { for(var j = 0; j < v.length; j++) { if(i != j && v[i] == v[j] && u.indexOf(v[i]) == -1) { u.push(v[i]); break; } } } return u; }![]()
Pietro
Pare funzionare:
HTHCodice PHP:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
A=['x','y','z','y','k','l','m','k','v'];
function cercaDoppi() {
B=new Array();
for (i=0;i<A.length;i++) {
for (j=0;j<A.length;j++) {
if ((i!=j) && (A[i]==A[j])) {
// ok, ho trovato un doppio, lo aggiungo a B se non c'e' gia'
if (B.indexOf(A[i]) == -1)
B[B.length]=A[i];
break;
}
}
}
// scrivo il vettore A nel div uno
var Stringa="Vettore A
";
for (i=0;i<A.length;i++) {
Stringa += A[i] + "
";
}
document.getElementById("uno").innerHTML = Stringa;
// scrivo il vettore B nel div due
Stringa="Vettore B
";
for (i=0;i<B.length;i++) {
Stringa += B[i] + "
";
}
document.getElementById("due").innerHTML = Stringa;
}
</script>
</head>
<body onload="cercaDoppi();">
<div id="uno"></div>
<div id="due"></div>
</body>
</html>
Zappa
[PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
[Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]
scusami mi potresti spiegare xkè nella riga sotto il primo commento,nell'if x intenderci,hai messo -1??![]()