Ordinare alfabeticamente un array e ordinare un secondo array in funzione del primo.

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Salve ho due array e desidero che una volta ordinato il primo con il metodo sort() poi ordini anche un secondo array già esistente in funzione del primo , posto l'esempio cosi sono più chiaro :

HTML:
<script language="javascript">

var citta = new Array();
citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";

var nominativi = new Array();
nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";


 function scrivi() {

   nominativi.sort();
      for (var i=0; i<nominativi.length; i++) {
            document.write('nome['+i+']="'+nominativi[i]+'"'+ "<br>");
         }   
             }
 scrivi()
 
</script>

Con questo metodo a video mi esce :

HTML:
nominativi[0]="Claudio Gentile"
nominativi[1]="Gianni Rivera"
nominativi[2]="Paolo Rossi"

e desidero che si ordini anche il secondo array cosi :

HTML:
var citta = new Array();
citta[0] = "Venezia";
citta[1] = "Napoli";
citta[2] = "Milano";

Il tutto però in linguaggio javascript non php :)
Ho trovato qualcosa in rete ma era con confronto di numeri e ciò non andava bene chiaramente nel mio caso.

Sperando in una vostra risposta vi lascio i miei saluti. Domenico.
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Ho trovato una funzione che può darsi può essere utile :

HTML:
function getSorted(arr, sortArr) 

{ var result = []; 
for(var i=0; i<arr.length; i++) 
{ result[i] = arr[sortArr[i]]; } return result; }

ma adesso sono stanco.... più di questo non riesco... a domani. :)
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Salve ho due array e desidero che una volta ordinato il primo con il metodo sort() poi ordini anche un secondo array già esistente in funzione del primo , posto l'esempio cosi sono più chiaro :

HTML:
<script language="javascript">

var citta = new Array();
citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";

var nominativi = new Array();
nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";


 function scrivi() {

   nominativi.sort();
      for (var i=0; i<nominativi.length; i++) {
            document.write('nome['+i+']="'+nominativi[i]+'"'+ "<br>");
         }   
             }
 scrivi()
 
</script>

Con questo metodo a video mi esce :

HTML:
nominativi[0]="Claudio Gentile"
nominativi[1]="Gianni Rivera"
nominativi[2]="Paolo Rossi"

e desidero che si ordini anche il secondo array cosi :

HTML:
var citta = new Array();
citta[0] = "Venezia";
citta[1] = "Napoli";
citta[2] = "Milano";

Il tutto però in linguaggio javascript non php :)
Ho trovato qualcosa in rete ma era con confronto di numeri e ciò non andava bene chiaramente nel mio caso.

Sperando in una vostra risposta vi lascio i miei saluti. Domenico.


Ciao Domenico,

non capisco cosa centri il PHP con array.sort()

un Array viene istanziato in ordine ascendente

Codice:
nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";

se chiedi di farti stampare gli indici dell'Array e il valore

ti scrive da 0 a 2

il risultato sarà:

Codice:
nominativi[0]="Paolo Rossi"
nominativi[1]="Gianni Rivera"
nominativi[2]="Claudio Gentile"

se vuoi istanziarlo in ordine discendente da 2 a 0

array.reverse()

il risultato sarà

Codice:
nominativi[0]="Claudio Gentile"
nominativi[1]="Gianni Rivera"
nominativi[2]="Paolo Rossi"

se vuoi istanziarlo in ordine alfabetico da A a Z

array.sort()

il risultato sarà:

Codice:
nome[0]="Claudio Gentile"
nome[1]="Gianni Rivera"
nome[2]="Paolo Rossi"

a video risulta uguale a .reverse()

questo perché avendo tre indici scritti:

Codice:
nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";

1° P
2° G
2° C

con sort() o reverse()

l'indice 2 ([1]) rimane invariato.

Per gli Array come detto in altro post è buona regola non istanziarli con una variabile di tipo new ma nome_array = []; non necessario per questo esempio, ma per determinate applicazioni ti darebbe errore con new.

Esempio con sort() e reverse()

Codice:
<script type="text/javascript">

var citta = new Array();
citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";

var nominativi = new Array();
nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";

var numeri = new Array();
numeri[0] = 3;
numeri[1] = 2;
numeri[2] = 1;


 function scrivi() {

      nominativi.sort();
      for (var i=0; i<nominativi.length; i++) {
      document.write('nome['+i+']="'+nominativi[i]+'"'+ "<br>");
	      }
	  citta.sort();
	  for (var j=0; j<citta.length; j++) {     
	  document.write('citta['+j+']="'+citta[j]+'"'+ "<br>");
		  }
	numeri.reverse();
	for (var x=0; x<numeri.length; x++) {     
	  document.write('numeri['+x+']="'+numeri[x]+'"'+ "<br>");
		  }
	}
 
 scrivi()
 
</script>

Risultato:

nome[0]="Claudio Gentile"
nome[1]="Gianni Rivera"
nome[2]="Paolo Rossi"
citta[0]="Milano"
citta[1]="Napoli"
citta[2]="Venezia"
numeri[0]="1"
numeri[1]="2"
numeri[2]="3"

Valeria.
 
Ultima modifica:

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Buongiorno Valeria, sicuramente non sono stato chiaro nella domanda :(

io desideravo che quando ordinavo l'array dei nomi dopo si ordinasse anche quello della città in funzione del primo array cioè se prima era cosi :

HTML:
var citta = new Array();
citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";

var nominativi = new Array();
nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";

dopo aver ordinato l'array dei nominativi e quindi avrei avuto questo :

HTML:
nominativi[0]="Claudio Gentile"
nominativi[1]="Gianni Rivera"
nominativi[2]="Paolo Rossi"

dovevo creare uno script che ordinasse il secondo array quello delle città non in ordine alfabetico ma in modo che le città seguissero i nominativi corrispettivi e quindi cosi :

HTML:
var citta = new Array();
citta[0] = "Venezia";
citta[1] = "Napoli";
citta[2] = "Milano";

spero di essere stato chiaro, intanto mi sono creato questa funzione che a video mi stampa ciò che desidero :

HTML:
<script language="javascript">

var citta = new Array();

citta[0] = "milano";
citta[1] = "napoli";
citta[2] = "venezia";




var nominativi = new Array();

nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";



function scrivi() {


var primoc = nominativi.slice(0)
var secondoc = "";

primoc.sort();

for (var i = 0;i<nominativi.length;i++){
for (var j=0;j<primoc.length;j++) {
if (nominativi[i]==primoc[j]){

document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");
break;
} } };


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");
}   }

scrivi()

che a video mi posta dunque :

HTML:
citta[0]="venezia"
citta[1]="napoli"
citta[2]="milano"
primoc[0]="Claudio Gentile"
primoc[1]="Gianni Rivera"
primoc[2]="Paolo Rossi"

e tutto funziona.... ma ho provato anche cosi :
HTML:
<script language="javascript">

var citta = new Array();

citta[0] = "milano";
citta[1] = "napoli";
citta[2] = "venezia";




var nominativi = new Array();

nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";



function scrivi() {


var primoc = nominativi.slice(0)
var secondoc = "";

primoc.sort();

for (var i = 0; i<nominativi.length; i++){
for (var j=0; j<primoc.length; j++) {
if (nominativi[i]==primoc[j]){
document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");
alert("array in primo alla pos. "+i+" trovato in secondo alla pos. "+j);

break;
} } };


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");

}   }

scrivi()
 
</script>

e mi esce invece :

HTML:
citta[0]="venezia"
citta[1]="napoli"
citta[2]="venezia"
primoc[0]="Claudio Gentile"
primoc[1]="Gianni Rivera"
primoc[2]="Paolo Rossi"

mi riporta due volte il valore "venezia.... perchè ? :(
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Buongiorno Valeria, sicuramente non sono stato chiaro nella domanda :(

io desideravo che quando ordinavo l'array dei nomi dopo si ordinasse anche quello della città in funzione del primo array cioè se prima era cosi :

HTML:
var citta = new Array();
citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";

var nominativi = new Array();
nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";

dopo aver ordinato l'array dei nominativi e quindi avrei avuto questo :

HTML:
nominativi[0]="Claudio Gentile"
nominativi[1]="Gianni Rivera"
nominativi[2]="Paolo Rossi"

dovevo creare uno script che ordinasse il secondo array quello delle città non in ordine alfabetico ma in modo che le città seguissero i nominativi corrispettivi e quindi cosi :

HTML:
var citta = new Array();
citta[0] = "Venezia";
citta[1] = "Napoli";
citta[2] = "Milano";

spero di essere stato chiaro, intanto mi sono creato questa funzione che a video mi stampa ciò che desidero :

HTML:
<script language="javascript">

var citta = new Array();

citta[0] = "milano";
citta[1] = "napoli";
citta[2] = "venezia";




var nominativi = new Array();

nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";



function scrivi() {


var primoc = nominativi.slice(0)
var secondoc = "";

primoc.sort();

for (var i = 0;i<nominativi.length;i++){
for (var j=0;j<primoc.length;j++) {
if (nominativi[i]==primoc[j]){

document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");
break;
} } };


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");
}   }

scrivi()

che a video mi posta dunque :

HTML:
citta[0]="venezia"
citta[1]="napoli"
citta[2]="milano"
primoc[0]="Claudio Gentile"
primoc[1]="Gianni Rivera"
primoc[2]="Paolo Rossi"

e tutto funziona.... ma ho provato anche cosi :
HTML:
<script language="javascript">

var citta = new Array();

citta[0] = "milano";
citta[1] = "napoli";
citta[2] = "venezia";




var nominativi = new Array();

nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";



function scrivi() {


var primoc = nominativi.slice(0)
var secondoc = "";

primoc.sort();

for (var i = 0; i<nominativi.length; i++){
for (var j=0; j<primoc.length; j++) {
if (nominativi[i]==primoc[j]){
document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");
alert("array in primo alla pos. "+i+" trovato in secondo alla pos. "+j);

break;
} } };


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");

}   }

scrivi()
 
</script>

e mi esce invece :

HTML:
citta[0]="venezia"
citta[1]="napoli"
citta[2]="venezia"
primoc[0]="Claudio Gentile"
primoc[1]="Gianni Rivera"
primoc[2]="Paolo Rossi"

mi riporta due volte il valore "venezia.... perchè ? :(

A me no, ma non vedi che i sort() sulla città non lo fa

Codice:
citta[0]="venezia"
citta[1]="napoli"
citta[2]="milano"
primoc[0]="Claudio Gentile"
primoc[1]="Gianni Rivera"
primoc[2]="Paolo Rossi"

Milano
Napoli
Venezia

Val.
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Valeria ma io non voglio il sort() sulle città.... desidero che esse cambiano ordine seguendo i nomi dell'altro array dei nomi.... se prima Paolo Rossi abitava a Milano e aveva posizione nominativo[0] se poi passa a nominativo[2] anche la sua città deve passare a citta[2] ;

A me lo script che non funziona è questo :

HTML:
<script language="javascript">

var citta = new Array();

citta[0] = "milano";
citta[1] = "napoli";
citta[2] = "venezia";




var nominativi = new Array();

nominativi[0] = "Paolo Rossi";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Claudio Gentile";



function scrivi() {


var primoc = nominativi.slice(0)
var secondoc = "";

primoc.sort();

for (var i = 0; i<nominativi.length; i++){
for (var j=0; j<primoc.length; j++) {
if (nominativi[i]==primoc[j]){
document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");
alert("array in primo alla pos. "+i+" trovato in secondo alla pos. "+j);

break;
} } };


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");

}   }

scrivi()
 
</script>

mi riporta :

HTML:
citta[0]="venezia"
citta[1]="napoli"
citta[2]="venezia"
primoc[0]="Claudio Gentile"
primoc[1]="Gianni Rivera"
primoc[2]="Paolo Rossi"

dove sbaglio ? :)
Domenico.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

sistema

document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");

Ho capito che non lo vuoi il sort() sulle città ma questi sono errori di facile visualizzazione.

Valeria
 
Ultima modifica:

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Mi spiace ma non ho compreso.....

intendi errato il codice :
HTML:
 document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");
??
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Codice:
<script type="text/javascript">

var citta = new Array();

citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";

var nominativi = new Array();

nominativi[0] = "Claudio Gentile";
nominativi[1] = "Gianni Rivera";
nominativi[2] = "Paolo Rossi";

function scrivi() {

var primoc = nominativi.slice(0)

primoc.sort();

for (var i = 0; i<nominativi.length; i++){
for (var j=0; j<primoc.length; j++) {
if (nominativi[i]==primoc[j]){
document.write('citta['+i+']="'+citta[j]+'"'+ "<br>");
//alert("array in primo alla pos. "+i+" trovato in secondo alla pos. "+j);

//break;
} } };


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");

}   }

scrivi()
 
</script>
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Ciao Valeria, purtroppo questo postato non funziona :(
Andava bene per fortuna per solo tre elementi....

ho messo su quest'altro e ho aggiunto che sia l'array citta che l'array nominativi si aggiornano con i nuovi valori ( lo so che avviene solo in cache ... ) e quindi possono essere usati anche per una nuova funzione nel nuovo ordine. Spero che non abbia omesso o errato qualcosa.. ma me ne sono andato per logica.

HTML:
<html>
<head>


<script type="text/javascript">

var citta = new Array();

citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";
citta[3] = "Brescia";
citta[4] = "Zurigo";
citta[5] = "Berlino";
citta[6] = "Roma";
citta[7] = "Bologna";
citta[8] = "Trieste";
citta[9] = "Firenze";

var nominativi = new Array();

nominativi[0] = "Paolo Milano";
nominativi[1] = "Gianni Napoli";
nominativi[2] = "Claudio Venezia";
nominativi[3] = "Fulvio Brescia";
nominativi[4] = "Giuseppe Zurigo";
nominativi[5] = "Mario Berlino";
nominativi[6] = "Mario Roma";
nominativi[7] = "Claudio Bologna";
nominativi[8] = "Massimo Trieste";
nominativi[9] = "Maurizio Firenze";

function scrivi() {
var identico = nominativi.slice(0);
var primoc = nominativi.slice(0);
var secondoc = citta.slice();

primoc.sort();

for (var i = 0; i<primoc.length; i++){
for (var j=0; j<nominativi.length; j++) {
if (nominativi[j]==primoc[i]){
citta[i] = secondoc[j];


document.write('citta['+i+']="'+citta[i]+'"'+ "<br>");
alert("array in primo alla pos. "+j+" trovato in secondo alla pos. "+i);

break;
} } 

};


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");
nominativi[i]= primoc[i] ;
}   }

scrivi()


function prova() {


for (var k=0; k<citta.length; k++) { 

document.write('Il Sig.'+nominativi[k]+" "+'abita nella citta di'+" "+citta[k]+"<br>"); }}

prova()
 

</script>
</head>
<body>
</body>
</html>

A stasera se ci sarete :)
Intanto buon pomeriggio. Domenico.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao Valeria, purtroppo questo postato non funziona :(
Andava bene per fortuna per solo tre elementi....

ho messo su quest'altro e ho aggiunto che sia l'array citta che l'array nominativi si aggiornano con i nuovi valori ( lo so che avviene solo in cache ... ) e quindi possono essere usati anche per una nuova funzione nel nuovo ordine. Spero che non abbia omesso o errato qualcosa.. ma me ne sono andato per logica.

HTML:
<html>
<head>


<script type="text/javascript">

var citta = new Array();

citta[0] = "Milano";
citta[1] = "Napoli";
citta[2] = "Venezia";
citta[3] = "Brescia";
citta[4] = "Zurigo";
citta[5] = "Berlino";
citta[6] = "Roma";
citta[7] = "Bologna";
citta[8] = "Trieste";
citta[9] = "Firenze";

var nominativi = new Array();

nominativi[0] = "Paolo Milano";
nominativi[1] = "Gianni Napoli";
nominativi[2] = "Claudio Venezia";
nominativi[3] = "Fulvio Brescia";
nominativi[4] = "Giuseppe Zurigo";
nominativi[5] = "Mario Berlino";
nominativi[6] = "Mario Roma";
nominativi[7] = "Claudio Bologna";
nominativi[8] = "Massimo Trieste";
nominativi[9] = "Maurizio Firenze";

function scrivi() {
var identico = nominativi.slice(0);
var primoc = nominativi.slice(0);
var secondoc = citta.slice();

primoc.sort();

for (var i = 0; i<primoc.length; i++){
for (var j=0; j<nominativi.length; j++) {
if (nominativi[j]==primoc[i]){
citta[i] = secondoc[j];


document.write('citta['+i+']="'+citta[i]+'"'+ "<br>");
alert("array in primo alla pos. "+j+" trovato in secondo alla pos. "+i);

break;
} } 

};


for (var i=0; i<primoc.length; i++) {
document.write('primoc['+i+']="'+primoc[i]+'"'+ "<br>");
nominativi[i]= primoc[i] ;
}   }

scrivi()


function prova() {


for (var k=0; k<citta.length; k++) { 

document.write('Il Sig.'+nominativi[k]+" "+'abita nella citta di'+" "+citta[k]+"<br>"); }}

prova()
 

</script>
</head>
<body>
</body>
</html>

A stasera se ci sarete :)
Intanto buon pomeriggio. Domenico.

Domenico hai dichiarato un nome a una variabile che non utilizzi

Codice:
var identico = nominativi.slice(0);
var primoc = nominativi.slice(0);
var secondoc = citta.slice();

var identico = nominativi.slice(0);

assegnazione variabile identiico non utilizzata

Codice:
var primoc = nominativi.slice(0);
var secondoc = citta.slice(0);


Valeria.
 
Discussioni simili
Autore Titolo Forum Risposte Data
R Ordinare alfabeticamente partendo da una PAROLA MySQL 0
M Ordinare una query join PHP 2
L [PHP] ordinare per data PHP 3
F [HTML] Google fogli ordinare per colonne HTML e CSS 0
P [PHP] ordinare un array multidimensionale in modo personalizzato PHP 2
T [PHP] ordinare un campo varchar che contiene numeri PHP 6
Trapano Query in php come ordinare per data e anche per ora PHP 7
L [PHP] ordinare xml PHP 0
Trapano [HTML] Ordinare indirizzi, creando un percorso HTML e CSS 3
M Ordinare i valori in query group by PHP 4
L Ordinare articoli dentro categorie e tag in ordine alfabetico wordpress WordPress 1
M Ordinare array (multidimensionale)? PHP 3
ste80 ordinare dati da file di testo PHP 3
M Ordinare visualizzazione record tramite form con input "text" PHP 2
xone Ordinare tramite menù a tendina i risultati di una query già stampati MySQL 0
M Ordinare array multidimensionale con esclusioni Javascript 0
M [PHP]Ordinare dati secondo prezzo PHP 2
borgo italia ordinare un array bidimensionale Snippet PHP 0
zighy ordinare risultati specifici PHP 20
D Ordinare i risultati di una query dalla fine della tabella MySQL 13
ivarello Ordinare dati Var in ordine numerico PHP 9
C Ordinare parole in base alla lunghezza PHP 1
Trapano Ordinare risultati MySQL 6
C Ordinare array in base alla lunghezza dei valori PHP 3
C Ordinare array multidimensionali PHP 0
T.W. Aiuto Per Ordinare Risultati Ricerca Da File CSV PHP 2
valient13 ordinare in ordine decrescente la lista PHP 2
F Ordinare array bidimensionale PHP 2
P [ASP] [Grauito] Ordinare categoria (era: reder by Cat) Offerte e Richieste di Lavoro e/o Collaborazione 1
G Ordinare query PHP 2
P Ordinare e impaginare una tabella contemporaneamente Javascript 1
novello88 MySQL ORDER BY [Era: ordinare i risultati di una database MySQL] MySQL 1
Monital ordinare il risultato di una query con variabili unite PHP 32
R Ordinare array in base al valore PHP 7
S ordinare array di date PHP 4
R Come ordinare gli articoli per data? Webdesign e Grafica 5
Monital ordinare in una tabella risultati query PHP 10
G ordinare i risultati di una query PHP 4
R Ordinare array in base al valore e alla key PHP 1
A Ordinare query sql in base ai risultati di ricerca PHP 1
M Ordinare il secondo elemento di uno split() PHP 10
N Ordinare per totali Database 0
G VBA e ordinare celle relativamente in Excel 2007 Windows e Software 0
S - Ordinare files uplodati - PHP 0
frankiedeguello Ordinare file per data di creazione PHP 1
T Ordinare dati di un Recordset [era:Grosso problema, chi mi aiuta?] Classic ASP 2
F ordinare una form con uno script php PHP 2
F FORM - ordinare l'email... HTML e CSS 3
J ordinare per nome Database 1
T ALTRO PROBLEMA CON ARRAY PHP PHP 1

Discussioni simili