Skip to main content

Ordinare un Array A Usando un Array B in Swift

Questo problema appare spesso su StackOverflow, consideriamo il seguente esempio

I 2 array sono allineati, ovvero il primo elemento di names corrisponde al primo array di year e così via.

Vogliamo riordinare i 2 array usando i valori di year. Ci aspettiamo il seguente risultato insomma

La funzione Zip

Zip è una delle poche funzioni globali che non sono state trasformate in un metodo di un qualche protocollo (come ad esempio è successo a count).

Ecco la definizione di Zip

Questa funzione permette di prendere 2 sequenze A e B (anche di tipi differenti) e restituisce un’unica sequenza dove ogni elemento è una tripla contenente un elemento della sequenza A e uno della sequenza B.

Vediamo un esempio pratico

La prima soluzione

Ecco quindi la prima soluzione al nostro problema

Usare un model

Usa un codice che utilizza un model sarebbe molto più chiaro invece di tenere i nostri dati separati tra diversi array.

Invece di usare 2 array che rappresentano il nome e l’anno di rilascio di un device (e perdere tempo per fare in modo che i 2 array rimangano allineati) non sarebbe più semplice avere un unico array di Device? Ogni device avrebbe una property name e una property year, in questo modo non correremmo mai il rischio di perdere l’allineamento dei valori.

Ripartiamo dai 2 array forniti in input

Definiamo il tipo Device

Trasformiamo i 2 array in unico array di Device e infine ordiniamolo usando la property year

Risultato

Meglio no?

Luca Angeletti

Trainer • Developer • Writer

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *